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