Extraer el código fuente del archivo .jar

172

¿Hay alguna manera de extraer el código fuente de un archivo ejecutable .jar (Java ME)?

hiba
fuente
3
Pero tenga en cuenta que hacer esto puede ser ilegal dependiendo de si posee los derechos de autor de la jarra, el país en el que vive y su propósito para hacerlo.
Richard
2
Si es de código abierto, obtenga la fuente del desarrollador. De lo contrario, "se apreciará cualquier cumplimiento con el EULA".
Andrew Thompson
Compruebe el descompilador Procyon. Descargue su jar para descompilar los archivos jar. He dado los pasos a continuación
nitin angadi

Respuestas:

146

Use JD GUI . Abra la aplicación, arrastre y suelte su archivo JAR.

adarshr
fuente
66
¿hay alguna manera de obtener el código fuente de .jar sin JD GUI?
Zulqurnain Jutt
Uso de @ZulqurnainJutt como se menciona en la respuesta de @ elachancejar xf filename.jar
Arvind Sridharan
46

Puede extraer un archivo jar con el comando:

jar xf filename.jar

Referencias: documentación JAR de Oracle

elachance
fuente
19
Esto es equivalente a cambiar el nombre filename.jarde filename.jar.zipy luego sólo descomprimirlo.
Mathias Bynens
28
Esto no extrae el código fuente. Extrae el código fuente compilado.
0xcaff
55
@caffinatedmonkey extrae el código fuente cuando el jar contiene archivos java, por ejemplo, tarros con nombres que generalmente terminan en "-sources". De hecho, solo extrae archivos .class cuando el jar no contiene ningún archivo fuente java.
edwardmp
37

Creo que esto se puede hacer muy fácilmente. Siempre puede extraer los archivos de origen (archivos Java) de un archivo jar en un archivo zip.

Pasos para obtener fuentes de un archivo jar como zip:

  1. Descargue JAD desde http://techieme.in/resources-needed/ y guárdelo en cualquier
    ubicación de su sistema.
  2. Arrastre y suelte el frasco para el que desea las fuentes en el JAD. 3 JAD UI se abrirá con toda la estructura del paquete en formato de árbol.
  3. Haga clic en el menú Archivo y seleccione guardar fuentes jar.
  4. Guardará las fuentes como un zip con el mismo nombre que el jar.

Espero que esto ayude.

El enlace está inactivo debido a algún motivo, por lo que puede agregar el enlace desde donde puede descargar JDGUI

dharam
fuente
1
@Nitesh ... publicaré el enlace alojado en mi sitio web ... descárguelo desde allí
dharam
44
La versión en el enlace techieme funciona de maravilla, ¡gracias!
DerStrom8
29

Su JAR puede contener fuente y javadoc, en cuyo caso simplemente puede usar jar xf my.jarpara extraerlos.

De lo contrario, puede usar un descompilador como se menciona en la respuesta de adarshr:

Use JD GUI . Abra la aplicación, arrastre y suelte su archivo JAR.

Matthew Willis
fuente
21
Tenga en cuenta que los archivos .jar son en realidad archivos .zip y se pueden abrir con cualquier herramienta ZIP.
Chris Nava
11

Sé que es una vieja pregunta. Todavía pensé que ayudaría a alguien.

1) Ve a la carpeta de tu archivo jar.

2) cambie su extensión a .zip.

3) Ya está listo y puede extraerlo fácilmente haciendo doble clic en él.

Nota: probé esto en MAC, funciona. Esperemos que también funcione en Windows.

afilado
fuente
2
@JCodex, estoy haciendo un proyecto de investigación sobre la herramienta de análisis de opiniones "opinionfinder" y su jarra contiene archivos Java y de clase. entonces tu comentario no es 100% verdadero. Sé que generalmente contendría solo .class pero no en este caso al menos
wired00
2
Su solución solo extraerá archivos .class, no el código fuente.
Carlos Sá
Parece que JD-GUI es una herramienta multiplataforma que realmente descompila el código y muestra el código fuente de las clases en todos los paquetes. Lo probé y pude obtener el código fuente en un segundo en MacOS. Tengo Java 8 instalado. Puede obtenerlo en jd.benow.ca No estoy seguro si funciona para proyectos grandes.
Carlos Sá
1
necesita el código fuente que no se proporciona por la forma en que lo describió
chiragchavda.ks
3

Haga lo siguiente en su caja de Linux donde funciona Java (si le gusta la forma terminal de hacer las cosas)

cd ~
mkdir decompiled_code && cd decompiled_code
wget https://bitbucket.org/mstrobel/procyon/downloads/procyon-decompiler-0.5.36.jar
java -jar procyon-decompiler-0.5.36.jar /Path/to/your/jar -o .

NOTA : como comentó @Richard "esto puede ser ilegal dependiendo de si posee los derechos de autor de la jarra, el país en el que vive y su propósito para hacerlo".

nitin angadi
fuente
Para un archivo de clase específico, puede hacer java -jar procyon-decompiler-0.5.36.jar package / of / the / java / class.class> className.java
nitin angadi
0

AndroChef Java Decompiler produce un código muy bueno que puede usar directamente en sus proyectos ...

Nik theGeeK
fuente
-2

Las herramientas anteriores extraen el frasco. También hay ciertas otras herramientas y comandos para extraer el jar. Pero AFAIK no puede obtener el código de Java en caso de que el código haya sido ofuscado.

Vishal
fuente
77
La mejor respuesta
fnc12
-6

suponga que su archivo JAR está en C: \ Documents and Settings \ mmeher \ Desktop \ jar y el nombre del archivo JAR es xx.jar, luego escriba los dos comandos a continuación en el símbolo del sistema:

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

2> jar xf xx.jar

Manas
fuente
-6

- Convierta el archivo .jar a .zip (en Windows simplemente cambie la extensión) - Descomprima la carpeta .zip - Obtendrá archivos completos .java

Pavan T
fuente
3
Como una pequeña nota sobre este método ... Es cierto que los archivos jar son archivos zip sofisticados. Sin embargo, descomprimir un jar probablemente producirá archivos * .class, es decir, archivos java "compilados". Es posible "descompilar" archivos de clase en archivos normales de Java. Esta funcionalidad está incluida en muchos IDEs
Daniel Hernández,
esto solo desbloqueará archivos de clase
Harshil