如何在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参数 。