从.jar文件中提取源代码

hib*_*iba 163 java decompiling jar java-me

有没有办法从可执行的.jar文件(Java ME)中提取源代码?

ada*_*shr 143

使用JD GUI.打开应用程序,将JAR文件拖放到其中.

  • 有没有办法从没有JD GUI的.jar获取源代码? (4认同)

ela*_*nce 45

您可以使用以下命令提取jar文件:

jar xf filename.jar
Run Code Online (Sandbox Code Playgroud)

参考资料:Oracle的JAR文档

  • 这不会提取源代码.它提取已编译的源代码. (23认同)
  • 这相当于将`filename.jar`重命名为`filename.jar.zip`然后解压缩它. (15认同)
  • @caffinatedmonkey它确实在jar包含java文件时提取源代码,例如名称通常以"-sources"结尾的jar.当jar不包含任何java源文件时,它确实只提取.class文件. (5认同)

dha*_*ram 37

我相信这可以很容易地完成.您始终可以将jar文件的源文件(Java文件)解压缩为zip.

将jar文件的源代码作为zip获取的步骤:

  1. http://techieme.in/resources-needed/下载JAD 并将其保存在
    系统的任何位置.
  2. 将您想要源的jar拖放到JAD上.3 JAD UI将以树格式打开所有包结构.
  3. 单击"文件"菜单,然后选择"保存jar源".
  4. 它会将源保存为与jar名称相同的zip.

希望这可以帮助.

由于某种原因链接已经死亡,因此添加了可以下载JDGUI的链接

  • techieme链接中的版本工作得很漂亮,谢谢! (4认同)

Mat*_*lis 28

您的JAR可能包含source和javadoc,在这种情况下,您只需使用它jar xf my.jar来提取它们.

否则你可以使用adarshr的答案中提到的反编译器:

使用JD GUI.打开应用程序,将JAR文件拖放到其中.

  • 请注意.jar文件实际上是.zip文件,可以使用任何ZIP工具打开. (21认同)

kee*_*een 10

我知道这是一个老问题仍然认为这会对某人有所帮助

1)转到jar文件的文件夹.

2)将其扩展名更改为.zip.

3)你很高兴,只需双击即可轻松提取.

注意:我在MAC中测试了这个,它可以工作.希望它也适用于Windows.

  • .jar包含.class文件,而不是.java代码 (8认同)
  • @JCodex,我正在做一个关于情感分析工具"opinionfinder"的研究项目,它的jar确实包含了java和类文件.所以你的评论不是100%真实.我知道它通常只包含.class,但至少在这种情况下不包含.class (2认同)
  • 您的解决方案只会提取.class文件而不是源代码. (2认同)

nit*_*adi 10

在 java 工作的 Linux 机器上执行以下操作(如果你喜欢终端的处理方式)

    cd ~
    mkdir decompiled_code && cd decompiled_code
//  download jar procyon from https://drive.google.com/file/d/1yC2gJhmLoyE8royCph5dLEncgkNZXj58/view?usp=sharing
    java -jar procyon-decompiler-0.5.36.jar /Path/to/your/jar -o .
Run Code Online (Sandbox Code Playgroud)

注意:正如 @Richard 评论的那样“这可能是非法的,具体取决于您是否拥有该罐子的版权、您居住的国家以及您这样做的目的。”


Pra*_*ags 6

获取 zip 形式的 jar 文件源的步骤:

  1. http://java-decompiler.github.io/下载JD-GUI并将其保存在系统上的任何位置。

  2. 将您想要其源的jar 拖放到 JD 上或打开.jar文件。

  3. Java Decompiler 将打开并显示树形格式的所有包结构。

  4. 单击“文件”菜单并选择“保存 jar 源”。它将把源代码保存为与 jar 名称相同的 zip 文件。

例子:-

在此输入图像描述

如果需要,我们也可以使用面向 Java EE 开发人员的 Eclipse IDE来更新/提取代码。

从 eclipse 中选择 Import Jar ,然后选择您需要的 jar。按照下图所示的说明进行操作

在此输入图像描述

在此输入图像描述