如何让 Java Decompiler / JD / JD-Eclipse 在 Eclipse Helios 中运行

Posted

技术标签:

【中文标题】如何让 Java Decompiler / JD / JD-Eclipse 在 Eclipse Helios 中运行【英文标题】:How to get Java Decompiler / JD / JD-Eclipse running in Eclipse Helios 【发布时间】:2011-05-29 13:32:24 【问题描述】:

Java Decompiler (JD) 通常被推荐为一个很好的 Java Decompiler。 JD-Eclipse是京东的Eclipse插件。

我在几台不同的机器上运行插件时遇到了问题。每当我尝试打开 .class 文件时,标准的“未找到源”编辑器都会显示,显示低级字节码反汇编,而不是反编译器所期望的 Java 源输出。

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

打开这个问题收集更多信息:在 JD 在 Eclipse Helios 中运行之前,您遇到了哪些问题?解决方案是什么?

【问题讨论】:

我做了步骤1、2、3和7。我把包含类文件的文件夹放在项目构建路径中(右键单击、属性、java构建路径、库、添加类文件夹,创建新文件夹,高级>>,链接到文件系统中的文件夹,浏览,...)然后重新启动eclipse。 JD-Eclipse的新家是:jd.benow.ca/#jd-eclipse 【参考方案1】:

这是我遇到的东西:

1) RTFM 并安装提到的“Microsoft Visual C++ 2008 SP1 Redistributable Package” 在安装文档的顶部。起初我错过了这一点,因为 Helios 的说明在最后。

2) 在打开类文件之前关闭所有打开的编辑器选项卡。否则很容易从以前的尝试中得到一个过时的编辑器选项卡。

3) 在“Java 类文件编辑器”(不是“Java 类文件查看器”)中打开类文件。使用上下文菜单中的“打开方式”来获得正确的编辑器。如果对结果满意,请将其设为 File Association 设置中的默认编辑器,在 Window/Preference General/Editors/File Associations 中选择 *.class 以使用“Java Class File Editor”打开。

4) This guy 建议从 Helios 更新站点安装 Equinox SDK。我做到了,但我不确定这是否真的有必要。有人知道吗?

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

6) 从 Windows 资源管理器拖放类文件或使用 File/Open File... 打开它将不起作用。在我的测试中,我给出了“无法打开编辑器:类文件查看器无法处理给定的输入('org.eclipse.ui.ide.FileStoreEditorInput')。”错误。无论如何,这可能是错误的编辑器,请参阅 3)。

7) 插件基本运行后,部分文件仍无法反编译,原因不明。关闭所有选项卡、重新启动 Helios 并重试后,此问题消失了。

【讨论】:

如果我可以在对话框窗口中看到它以添加库或类文件夹,我将能够执行步骤 5。;但我不能。我也无法在任何地方找到有关如何使用此反编译器的说明 第 3 步的第二部分对我来说是 Eclipse 4.2M5 中的关键。上下文菜单中没有打开方式,因此您需要在“*.class without source”的文件关联下添加类文件编辑器并将其设为默认值。 我看到的是“类文件编辑器”,而不是“Java 类文件编辑器”。 (Eclipse Indigo SR2) 但是选择“类文件编辑器”,它仍然会打开旧的“类文件查看器”。怎么了?为什么这么难? @Leo 在 eclipse Juno 中将 *.class without source 编辑器设置为 class file editor。更改 *.class 的设置可能不起作用。 @Kshitiz:问题是打开的 .class 文件不在类路径中。请参阅下面的完整答案。【参考方案2】:

我改用 jadeclipse,因为它在 3.6/3.7 eclipse 中不能工作

更新网站 http://webobjects.mdimension.com/jadclipse/3.6/

安装 http://5thcross.wordpress.com/2009/05/20/installing-jadclipse-in-eclipse/

【讨论】:

谢谢,我试过京东,但实际上更新站点的链接坏了。 在尝试并在本文中概述的所有内容都失败后才这样做。 (Eclipse 2.9.2) JAD 更新站点工作正常,安装似乎工作正常【参考方案3】:

我正在使用 Eclipse 3.7 Indigo 和 Windows 7 64 位:

我所做的是按照网站的建议和@Universalspezialist 的提醒安装 Microsoft Visual C++ 2008 SP1 Redistributable Package。

然后按照网站上的说明安装插件:http://java.decompiler.free.fr/?q=jdeclipse

转到首选项,然后找到“文件关联” 点击 *.class,然后将“类文件编辑器”设置为默认值。

也许重启 Eclipse? (我这样做了,但我不确定是否有必要)

【讨论】:

【参考方案4】:

我做了步骤1、2、3和7。我把包含类文件的文件夹放在项目构建路径中(右键单击,属性,java构建路径,库,添加类文件夹,创建新文件夹,高级>>,链接到文件系统中的文件夹,浏览,...)然后重新启动 Eclipse。

【讨论】:

【参考方案5】:

我做了一件简单的事情来让它工作:

进入 Eclipse > 窗口 > 首选项

(可选)在搜索框中输入“文件”以帮助修剪选项树。 转到常规 > 编辑 > 文件关联。

单击“.class”类型。下面有 2 个编辑器,我点击“类文件编辑器”——带有 JD 图标的那个,点击右侧的“默认”按钮。

完成。 现在你所有的班级都属于我们了。

【讨论】:

【参考方案6】:

JD-eclipse 插件 0.1.3 只能反编译从类路径/构建路径可见的 .class 文件

如果您的类位于 .jar 中,您可以简单地将这个 jar 作为另一个库添加到构建路径中。从包资源管理器中浏览您的新库并在类文件编辑器中打开该类。

如果您想反编译文件系统上的任何类,它必须位于相应的文件夹层次结构中,并且根文件夹必须包含在构建路径中。这是一个例子:

    类是 foo.bar.MyClass in .../someDir/foo/bar/MyClass.class 在您的 Eclipse 项目中,添加一个具有任意名称 aClassDir 的文件夹,该文件夹链接到 .../someDir。 将该链接文件夹添加到项目的构建路径中。 使用导航器视图导航并在类文件编辑器中打开 .class 文件。 (注意:文件系统上的普通 .class 文件隐藏在 Package Explorer 视图中。)

注意:如果 someDir 是您项目的子文件夹,您可以跳过第 2 步(链接文件夹)并将其直接添加到构建路径。但是如果是Eclipse项目的编译器输出文件夹,那就不行了。

附:我希望我可以双击任何项目子文件夹中的任何 .class 文件,而无需将它放在类路径中......

【讨论】:

最有用的答案。谢谢!【参考方案7】:

只需从京东页面下载该网站。我能够从 Eclipse 安装软件部分的本地站点进行安装。

【讨论】:

【参考方案8】:

要让它在 Eclipse Juno 中工作 - 我必须做一些额外的步骤。

一般 -> 编辑器 -> 文件关联

    选择“*.class”并将“类文件编辑器”标记为默认 选择“*.class without source”->添加->“类文件编辑器”->设为默认 重启eclipse

【讨论】:

【参考方案9】:

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

更新站点:http://feeling.sourceforge.net/update

步骤:

    打开 Eclipse IDE。 点击帮助->安装新软件 粘贴上面的 URL 并命名为 JAD。 选择 Eclipse 类反编译器 点击下一步并接受协议 安装它。 重新启动 Eclipse 并立即检查。

【讨论】:

“浏览器无法加载文档”——我差点投反对票。我最终发现我需要将该链接放入 Eclipse 中......本来可以更清楚地说明。我已经安装并工作了,谢谢!也许更好地参考marketplace.eclipse.org/content/jadclipse-eclipse-4x。 这与 Spring Tool Suite 3.4 完美配合。对于那些面临 jadclipse 问题的人来说非常有用。 当问题是关于 JD-Eclipse 的时候,你为什么要发布 JADclipse 的安装步骤?【参考方案10】:

在 Juno、Kepler 和 Luna 上进行测试后,我发现 JD 仅适用于构建路径上的 *.class 文件

    将 jar 添加为现有项目的库 转到首选项->常规->编辑器->文件关联,使用杯子图标将*.class without source 设置为Class File Editor

【讨论】:

这个解决方案在 Eclipse Oxygen 上对我有用。我还将“JD Class File Viewer”设置为“*.class without source”的默认值。 此解决方案适用于 Eclipse 2020-03,构建路径技巧是必要的,谢谢! 在 Eclipse 2020-12 上也为我工作【参考方案11】:

如果您需要反编译独立 jar,请尝试使用同一作者(JD-Eclipse)的 JD-GUI。它是一个独立的应用程序(不需要 eclipse)。它可以打开 *.class 和 *.jar 文件。有趣的是,它需要安装 .Net(确实 JD-Eclipse 也是如此),但在其他方面就像一个魅力。

在这里找到它:

http://jd.benow.ca/

问候,

【讨论】:

【参考方案12】:

在Eclipse中添加Java反编译器的步骤:

    打开 Eclipse IDE。 点击帮助->Eclipse Marketplace 向导 在 Search 选项卡中找到 JD(JD 是获取 Eclipse 类反编译器的关键字) 选择Eclipse 类反编译器 点击安装。 重启 Eclipse 并检查

【讨论】:

之前已经对这个问题做出了类似的回答。【参考方案13】:

它应该适用于所有版本的 Eclipse,即使在 Spring 工具套装(STS)中也是如此。 这是步骤

转到网址 Follow The link to download或点击下方链接直接下载 Click Here to download

下载JD-Eclipse。 下载并解压 JD-Eclipse 更新站点,

启动 Eclipse,

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

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

输入“JD-Eclipse更新站点”,选择本地站点目录,

选择提取的文件夹并给出任何名称。我给了JDA。 然后点击确定。

勾选“Java Decompiler Eclipse Plug-in”,

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

【讨论】:

感谢 Varun,这对我有用。但是有些jar没有反编译。有没有办法手动选择一个jar,比如一个maven依赖jar并用jd-gui打开?【参考方案14】:
    下载 JD-Eclipse 更新站点(github.com/java-decompiler/jd-eclipse)

    启动 Eclipse,

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

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

    输入“JD-Eclipse更新站点”,选择本地站点目录,

    勾选“Java Decompiler Eclipse Plug-in”,

    下一步,下一步,下一步...并重新启动 Eclipse。

【讨论】:

【参考方案15】:

我使用 Intellij 或 android Studio 都可以很好地进行反编译。 在 FernFlower Decompiler 之后的内部 Intellij。

【讨论】:

以上是关于如何让 Java Decompiler / JD / JD-Eclipse 在 Eclipse Helios 中运行的主要内容,如果未能解决你的问题,请参考以下文章

Java反编译工具:Java Decompiler

Eclipse Class Decompiler——Java反编译插件的安装和使用

Java Decompiler(Java反编译工具)

为啥JD Decompiler只可以看class文件,可以直接修改class文件吗,怎么修改?

016-Java Decompiler(Java反编译工具)

CFR - another java decompiler批量反编译jar文件(转)