如何在eclipse中使用javap?

时间:2011-08-14 13:12:10

标签: java eclipse javap

正如标题所述,我正在尝试使用javap进行日食,但很难设置它。我正在尝试使用external tools菜单中的run进行设置,但无法找到正确的Arguments:字符串以使其正常工作。基本上我需要能够动态执行我打开的当前文件的东西。

5 个答案:

答案 0 :(得分:25)

我使用以下外部工具配置来实现此目的:

enter image description here

${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)

Using javap command in eclipse

@AlexR建议的有价值的自定义脚本的补充;另一种方法是:在Ecplise中打开终端窗口,并使用-p和其他选项运行javap命令。