如何在Eclipse Helios中运行Java反编译器/JD/JD-Eclipse

46

Java反编译器(JD)通常被认为是一款优秀的Java反编译器。JD-Eclipse是JD的Eclipse插件。

我在多台不同的机器上安装插件时遇到了问题。每当我尝试打开一个.class文件时,标准的“源代码未找到”编辑器就会显示出来,显示低级字节码反汇编,而不是你从反编译器预期的Java源代码输出。

http://java.decompiler.free.fr/?q=jdeclipse的安装文档中并不算糟糕,但在故障排除方面相当模糊。

开启此问题以收集额外信息:在Eclipse Helios中使用JD之前,您遇到了哪些问题? 解决方法是什么?


2
我完成了步骤1、2、3和7,并将包含类文件的文件夹放置在项目构建路径中(右键单击,属性,Java构建路径,库,添加类文件夹,创建新文件夹,高级>>,链接到文件系统中的文件夹,浏览...),然后重新启动Eclipse。 - juan
1
JD-Eclipse的新主页是:http://jd.benow.ca/#jd-eclipse - David Avendasora
15个回答

37

以下是我遇到的问题:

1) RTFM(阅读完整手册)并安装安装文档顶部提到的“Microsoft Visual C++ 2008 SP1 Redistributable Package”。因为Helios的说明在最后,所以我起初错过了这一步。

2) 在打开类文件之前关闭所有打开的编辑器标签。否则很容易从先前的尝试中获得过时的编辑器标签。

3) 在“Java类文件编辑器”中打开类文件(而不是“Java类文件查看器”)。使用上下文菜单中的“打开方式”获取正确的编辑器。如果结果令人满意,请将其设置为默认编辑器。在窗口/首选项常规/编辑器/文件关联中选择* .class,并选择“Java类文件编辑器”进行打开。

4) 该用户建议从Helios更新站安装Equinox SDK。我安装了它,但不确定是否真的需要。有人知道吗?

5) 如果要查看的类文件位于Eclipse Java项目中,则它们需要位于项目的构建路径中。否则,Eclipse错误日志中会显示异常(“不在构建路径中”),反编译会失败。我将类文件添加为库/类文件夹以便它们出现在构建路径中。

6) 从Windows资源管理器中拖放类文件或使用“文件/打开文件...”打开它将无法正常工作。在我的测试中,它会出现“无法打开编辑器:Class File Viewer无法处理给定的输入('org.eclipse.ui.ide.FileStoreEditorInput')”错误。那可能是错误的编辑器,参见3)。

7) 在基本运行插件之后,一些文件仍然无法反编译,原因不明。这在关闭所有标签、重启Helios并重新尝试后消失了。


如果我能在添加库或类文件夹的对话框窗口中看到步骤5,我就能执行它;但是我不能。我也找不到任何关于如何使用这个反编译器的说明。 - Dark Star1
8
在Eclipse 4.2M5版本中,第三步的第二部分对我非常关键。在上下文菜单中没有“打开方式”,所以你需要将“Class File Editor”添加到“*.class without source”的文件关联中,并将其设置为默认编辑器。 - Trevor Robinson
2
我看到的是“Class File Editor”,而不是“Java Class File Editor”(Eclipse Indigo SR2)。但是选择“Class File Editor”后,它仍然打开旧的“Class File Viewer”。出了什么问题?为什么这么难啊? - leo
2
在Eclipse Juno中,将*.class without source编辑器设置为class file editor。更改*.class的设置可能无效。 - Kshitiz Sharma
@Kshitiz:问题在于打开的.class文件不在类路径中。请参见下面的完整答案。 - leo
+1 已经解决了,不需要第四步。但是在我设置关联到 *.class without source 之前,它并没有工作。在那之前,它只会显示“org.eclipse.ui.ide.FileStoreEditorInput”错误。 - Kent Boogaart

19

为使其在Eclipse Juno中工作 - 我需要执行一些附加步骤。

通常->编辑器->文件关联

  1. 选择“*.class”并将“Class File Editor”标记为默认
  2. 选择“*.class without source”->添加->“Class File Editor”->将其设为默认
  3. 重新启动eclipse

9
JD-eclipse插件0.1.3只能反编译在类路径/构建路径可见的.class文件。如果您的类存储在.jar中,可以将该jar作为另一个库添加到构建路径中。从包资源管理器中浏览新库并打开类文件编辑器中的类即可。如果要反编译文件系统中的任何类,则必须将其放置在适当的文件夹层次结构中,并将根文件夹包含在构建路径中。下面是一个示例:
1. Class文件foo.bar.MyClass位于.../someDir/foo/bar/MyClass.class中 2. 在Eclipse项目中,添加一个名为aClassDir的文件夹,该文件夹链接到.../someDir 3. 将链接文件夹添加到项目的构建路径中。 4. 使用导航器视图浏览并在类文件编辑器中打开.class文件。(注意:在包资源管理器视图中,文件系统上的普通.class文件是隐藏的)
注意:如果someDir是项目的子文件夹,则可以跳过第2步(链接文件夹)并直接将其添加到构建路径中。但如果它是Eclipse项目的编译器输出文件夹,则无法正常工作。
附注:我希望我可以在任何项目子文件夹中双击任何.class文件而不需要将其添加到类路径中...

一堆答案中最有用的答案。谢谢! - truedat101

6

在 Juno、Kepler 和 Luna 上测试后,我发现 JD 只能用于构建路径中的 *.class 文件

  1. 将 jar 文件添加为现有项目的库
  2. 转到“Preferences->General->Editors->File Associations”,将 *.class without source 设置为具有杯子图标的 Class File Editor

3
这个解决方案在Eclipse Oxygen上对我很有效。我还将“JD Class File Viewer”设置为“*.class without source”的默认查看器。 - Nathan
这个解决方案对我在Eclipse 2020-03上有效,构建路径技巧是必要的,谢谢! - mounaim
在Eclipse 2020-12上对我也起作用了。 - Osmar

6
我正在使用Eclipse 3.7 Indigo和Windows 7 64位系统:
我按照网站上的建议并被@Universalspezialist提醒,安装了Microsoft Visual C++ 2008 SP1 Redistributable Package。
然后,按照该网站上的说明安装插件:http://java.decompiler.free.fr/?q=jdeclipse 在“首选项”中找到“文件关联”,单击*.class,将“class文件编辑器”设置为默认值。
也许需要重新启动Eclipse?(我这样做了,但不确定是否必要)

6

我所做的简单事情:

打开Eclipse > 窗口 > 首选项

(可选)在搜索框中输入"file"来帮助筛选选项树。 前往通用 > 编辑器 > 文件关联。

点击".class"类型。下面有两个编辑器,我点击了"Class File Editor"——带有JD图标的那个,然后点击右边的"默认"按钮。

完成。 现在你的所有类都属于我们。


5

这个插件适用于所有版本的Eclipse,包括Spring Tool Suite(STS)。

以下是步骤:

1.前往此网址下载 或者点击下面的链接进行直接下载 点我下载

2.下载JD-Eclipse
下载并解压JD-Eclipse Update Site,

3.启动Eclipse,

4.单击“帮助”>“安装新软件...”,

5.点击“添加...”按钮添加新的存储库,

6.输入“JD-Eclipse Update Site”,然后选择本地站点目录,

7.enter image description here 选中已解压的文件夹并给它命名。我这里取名为 JDA 然后点击“确定”。

enter image description here

8.选中“Java Decompiler Eclipse Plug-in”,enter image description here

9.下一步,下一步...然后重新启动Eclipse。


谢谢Varun,这对我有用。但是有些jar文件无法反编译。是否有一种方法可以手动选择一个jar文件,比如一个Maven依赖的jar文件,并使用jd-gui打开? - user4987870

3

Eclipse的JAD反编译插件适用于3.x和4.x版本。

更新地址:http://feeling.sourceforge.net/update

步骤:

  1. 打开Eclipse IDE。
  2. 点击帮助->安装新软件
  3. 粘贴上面的URL并将名称设为JAD。
  4. 选择Eclipse类反编译器
  5. 点击下一步并接受协议
  6. 安装它。
  7. 重启Eclipse并检查。

2
文档无法被浏览器加载--我差点就要给它点个踩。最终我弄清楚了,我需要将那个链接放到Eclipse中...本可以表述得更清楚一些。我已经安装并运行成功了,谢谢!也许更好的参考是https://marketplace.eclipse.org/content/jadclipse-eclipse-4x。 - JimN
这在Spring Tool Suite 3.4上完美运行。对于那些遇到jadclipse问题的人非常有用。 - Narayana Nagireddi
为什么你发布JADclipse的安装步骤,当问题是关于JD-Eclipse的? - Peter Wippermann

3

谢谢,我尝试了JD,但实际上更新站点链接是失效的。 - groo
在尝试并失败了本文中概述的所有方法后,我终于做到了这一点。(Eclipse 2.9.2)JAD更新站点运行良好,安装似乎也很顺利。 - Beta033

2
如果您需要反编译独立的jar文件,请尝试由JD-Eclipse作者开发的JD-GUI。它是一个独立的应用程序(不需要eclipse)。它可以打开*.class和*.jar文件。有趣的是,它需要安装.Net(就像JD-Eclipse一样),但除此之外,它非常好用。
在这里找到它:

http://jd.benow.ca/

问候,

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接