如何在eclipse中使用javap?
正如标题所述,我正在尝试使用javap
与eclipse但是很难设置它。 我正在尝试使用run
菜单中的external tools
进行设置,但无法找到正确的Arguments:
string以使其正常工作。 基本上我需要能够动态执行我打开的当前文件的东西。
我使用以下外部工具配置来实现此目的:
${system_path:javap}
用于在Eclipse使用的JDK中定位javap。 您可以使用javap的绝对路径。
${project_loc}
返回项目的绝对路径。 使用它,因为我找不到要使用的预定义变量来定位资源的.class
文件,这就是javap
在项目目录而不是包含.class
文件的目录中运行的原因。
在传递给javap
的参数中:
-
bin
是Eclipse项目的默认输出文件夹。 将其更改为build/classes
或项目使用的任何内容。 注意,该值相对于${project_loc}
; 您可以改为指定绝对路径。 -
${java_type_name}
用于获取所选的类名。
您可以在Project explorer视图或Project导航器视图中选择Java文件,甚至可以在任何视图中选择Java类型,然后运行外部工具。 注意 – 当您选择方法,内部类等然后运行该工具时,这种方法不能很好地工作,因为它们本身不是资源,导致${project_loc}
将为空的情况。
您的问题是javap需要获取类文件的路径,但是当您选择源文件时,您可以访问eclipse变量${selected_resource_loc}
包含java源的路径。 据我所知,没有包含类文件路径的变量。
我认为最简单的方法是创建自定义脚本,接受java文件的路径,将java
替换为class
,将源文件夹替换为bin文件夹。 如果您使用的是linux,可以使用命令sed
轻松完成。 如果您在Windows上,可以使用带有~
命令SET
来实现。 有关详细信息,请参阅帮助
祝你好运。
请尝试修改Working Directory
以匹配您的java项目输出文件夹。 就我而言,它看起来如下所示。
工作目录: ${workspace_loc:/Sample/bin}
然后我选择了.class
文件并执行了javap
而没有任何问题。
为了在Eclipse中反汇编当前选定的.class
文件,我在外部工具配置中使用以下参数 。
这样, bin
文件夹的子包中的类也可以被反汇编。 输出显示在“控制台”视图中。
Oracle文档的javap参数 。