Extract source code from .jar file
Asked Answered
U

11

212

Is there a way to extract the source code from an executable .jar file (Java ME)?

Unmarked answered 24/2, 2011 at 16:6 Comment(3)
But note that doing this may be illegal depending on whether you own the copyright to the jar, the country you live in and your purpose for doing it.Vacuous
If it is open source, get the source from the developer. Otherwise "Any compliance with the EULA will be appreciated".Murrumbidgee
Check procyon decompiler. Download it's jar to decompile jar files. I have given steps belowLucais
G
169

Use JD GUI. Open the application, drag and drop your JAR file into it.

Gaekwar answered 24/2, 2011 at 16:8 Comment(3)
is there a way to get source code from .jar without JD GUI ?Sirdar
@ZulqurnainJutt use as mentioned in @elachance's answer jar xf filename.jarJulietjulieta
This is the best solution.Facture
M
68

You can extract a jar file with the command :

jar xf filename.jar

References : Oracle's JAR documentation

Matlick answered 24/9, 2012 at 16:18 Comment(3)
This is equivalent to renaming filename.jar to filename.jar.zip and then just unzipping it.Bifoliolate
This doesn't extract the source code. It extracts the compiled source code.Gripping
@caffinatedmonkey it does extract source code when the jar contains java files, e.g. jars with names typically ending in "-sources". It indeed does only extract .class files when the jar does not contain any java source files.Deodorant
D
43

I believe this can be done very easily. You can always extract the source files (Java files) of a jar file into a zip.

Steps to get sources of a jar file as a zip :

  1. Download JAD from http://techieme.in/resources-needed/ and save it at any
    location on your system.
  2. Drag and drop the jar for which you want the sources on the JAD. 3 JAD UI will open with all the package structure in a tree format.
  3. Click on File menu and select save jar sources.
  4. It will save the sources as a zip with the same name as the jar.

Hope this helps.

The link is dead due to some reason so adding the link from where you can download the JDGUI

Draff answered 19/5, 2013 at 8:20 Comment(3)
@Nitesh... I will be posting the link hosted on my website... please download it from thereDraff
The version in the techieme link works beautifully, thank you!Adriel
After saving all sources, when I open the Java files, it shows all the lines as commented lines. Is there any setting to fix that?Orpha
P
39

Your JAR may contain source and javadoc, in which case you can simply use jar xf my.jar to extract them.

Otherwise you can use a decompiler as mentioned in adarshr's answer:

Use JD GUI. Open the application, drag and drop your JAR file into it.

Predation answered 24/2, 2011 at 16:17 Comment(1)
Note that .jar files are actually .zip files and can be opened with any ZIP tool.Differentiation
P
17

I know it's an old question Still thought it would help someone

1) Go to your jar file's folder.

2) change it's extension to .zip.

3) You are good to go and can easily extract it by just double clicking it.

Note: I tested this in MAC, it works. Hopefully it will work on windows too.

Pristine answered 12/2, 2014 at 12:26 Comment(4)
@JCodex, I'm doing a research project on the sentiment analysis tool "opinionfinder" and its jar does indeed contain both java AND class files. so your comment is not 100% true. I know it would usually contain only .class but not in this case at leastDogleg
Your solution will only extract .class files not the source code.Prayerful
Seems JD-GUI is a multi-platform tool that actually decompiles the code and shows the source code for classes in all packages. I tried it and could get the source code in a second in MacOS. I have Java 8 installed . You can get it on jd.benow.ca Not sure if it works for large projects.Prayerful
need source code which is not provide by the way you describedFoiled
L
11

Do the following on your linux box where java works (if u like the terminal way of doing things)

    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 .

NOTE : as @Richard commented "this may be illegal depending on whether you own the copyright to the jar, the country you live in and your purpose for doing it."

Lucais answered 5/11, 2019 at 13:4 Comment(1)
For a specific class file you can do java -jar procyon-decompiler-0.5.36.jar /Path/to/your/jar package/of/the/java/class.class > className.javaLucais
F
6

Steps to get sources of a jar file as a zip :

  1. Download JD-GUI from http://java-decompiler.github.io/ and save it at any location on your system.

  2. Drag and drop the jar or open .jar file for which you want the sources on the JD.

  3. Java Decompiler will open with all the package structure in a tree format.

  4. Click on File menu and select save jar sources. It will save the sources as a zip with the same name as the jar.

Example:-

enter image description here

We can use Eclipse IDE for Java EE Developers as well for update/extract code if require.

From eclipse chose Import Jar and then select jar which you need. Follow instruction as per image below

enter image description here

enter image description here

Floe answered 3/11, 2020 at 18:0 Comment(0)
M
0

AndroChef Java Decompiler produces very good code that you can use directly in your projects...

Mcinnis answered 3/5, 2014 at 2:59 Comment(0)
Y
-2

Above tools extract the jar. Also there are certain other tools and commands to extract the jar. But AFAIK you cant get the java code in case code has been obfuscated.

Young answered 4/3, 2014 at 9:49 Comment(1)
The greatest answerDisentomb
S
-6

suppose your JAR file is in C:\Documents and Settings\mmeher\Desktop\jar and the JAR file name is xx.jar, then write the below two commands in command prompt:

1> cd C:\Documents and Settings\mmeher\Desktop\jar

2> jar xf xx.jar

Smetana answered 31/1, 2014 at 11:18 Comment(0)
S
-9

-Covert .jar file to .zip (In windows just change the extension) -Unzip the .zip folder -You will get complete .java files

Shrimp answered 12/5, 2017 at 18:37 Comment(2)
As a small note on this method... It is true that jar files are fancy zip files. However, unziping a jar will most likely yield *.class files, that is "compiled" java files. It is possible to "decompile" class files to normal java files. This functionality is included in many IDEsBoorish
this will just unlock class filesSchechinger

© 2022 - 2024 — McMap. All rights reserved.