Extraire le code source du fichier .jar


172

Existe-t-il un moyen d'extraire le code source d'un fichier exécutable .jar (Java ME)?


3
Mais notez que cela peut être illégal selon que vous possédez ou non les droits d'auteur sur le pot, le pays dans lequel vous vivez et votre but pour le faire.
Richard

2
S'il est open source, récupérez la source auprès du développeur. Sinon, "Toute conformité avec le CLUF sera appréciée".
Andrew Thompson

Vérifiez le décompilateur procyon. Téléchargez son fichier jar pour décompiler les fichiers jar. J'ai donné les étapes ci
nitin angadi

Réponses:


146

Utilisez JD GUI . Ouvrez l'application, faites glisser et déposez votre fichier JAR dedans.


6
existe-t-il un moyen d'obtenir le code source de .jar sans JD GUI?
Zulqurnain Jutt

@ZulqurnainJutt utilise comme mentionné dans la réponse de @ elachancejar xf filename.jar
Arvind Sridharan

46

Vous pouvez extraire un fichier jar avec la commande:

jar xf filename.jar

Références: documentation JAR d'Oracle


19
Cela équivaut à renommer filename.jarà filename.jar.zipet puis juste décompresser.
Mathias Bynens

28
Cela n'extrait pas le code source. Il extrait le code source compilé.
0xcaff

5
@caffinatedmonkey il extrait le code source lorsque le jar contient des fichiers java, par exemple des jars dont les noms se terminent généralement par "-sources". En effet, il n'extrait les fichiers .class que lorsque le jar ne contient aucun fichier source java.
edwardmp

37

Je pense que cela peut être fait très facilement. Vous pouvez toujours extraire les fichiers source (fichiers Java) d'un fichier jar dans un zip.

Étapes pour obtenir les sources d'un fichier jar sous forme de zip:

  1. Téléchargez JAD depuis http://techieme.in/resources-needed/ et enregistrez-le à n'importe quel
    endroit de votre système.
  2. Faites glisser et déposez le pot pour lequel vous voulez les sources sur le JAD. 3 L'interface utilisateur JAD s'ouvre avec toute la structure du package dans un format arborescent.
  3. Cliquez sur le menu Fichier et sélectionnez Enregistrer les sources de jar.
  4. Il enregistrera les sources sous forme de zip avec le même nom que le fichier jar.

J'espère que cela t'aides.

Le lien est mort pour une raison quelconque, alors ajoutez le lien à partir duquel vous pouvez télécharger le JDGUI


1
@Nitesh ... Je publierai le lien hébergé sur mon site Web ... veuillez le télécharger à partir de là
dharam

4
La version dans le lien techieme fonctionne à merveille, merci!
DerStrom8

29

Votre JAR peut contenir des sources et javadoc, auquel cas vous pouvez simplement les utiliser jar xf my.jarpour les extraire.

Sinon, vous pouvez utiliser un décompilateur comme mentionné dans la réponse d'adarshr:

Utilisez JD GUI . Ouvrez l'application, faites glisser et déposez votre fichier JAR dedans.


21
Notez que les fichiers .jar sont en fait des fichiers .zip et peuvent être ouverts avec n'importe quel outil ZIP.
Chris Nava

11

Je sais que c'est une vieille question J'ai toujours pensé que ça aiderait quelqu'un

1) Accédez au dossier de votre fichier jar.

2) changez son extension en .zip.

3) Vous êtes prêt à partir et pouvez facilement l'extraire en double-cliquant dessus.

Remarque: j'ai testé cela sous MAC, cela fonctionne. Espérons que cela fonctionnera également sur Windows.


2
@JCodex, je fais un projet de recherche sur l'outil d'analyse des sentiments "opinionfinder" et son jar contient en effet à la fois des fichiers java ET de classe. donc votre commentaire n'est pas vrai à 100%. Je sais qu'il ne contiendrait généralement que .class mais pas dans ce cas du moins
wired00

2
Votre solution extrait uniquement les fichiers .class et non le code source.
Carlos Sá

Semble JD-GUI est un outil multiplateforme qui décompile le code et affiche le code source des classes dans tous les packages. Je l'ai essayé et j'ai pu obtenir le code source en une seconde sous MacOS. J'ai installé Java 8. Vous pouvez l'obtenir sur jd.benow.ca Je ne sais pas si cela fonctionne pour les grands projets.
Carlos Sá

1
besoin d'un code source qui n'est pas fourni par la manière dont vous l'avez décrit
chiragchavda.ks

3

Faites ce qui suit sur votre machine Linux où java fonctionne (si vous aimez la manière de faire les choses par le terminal)

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 .

REMARQUE : comme @Richard l'a commenté, "cela peut être illégal selon que vous possédez ou non les droits d'auteur sur le pot, le pays dans lequel vous vivez et votre objectif pour le faire."


Pour un fichier de classe spécifique, vous pouvez faire java -jar procyon-decompiler-0.5.36.jar package / of / the / java / class.class> className.java
nitin angadi

0

AndroChef Java Decompiler produit un très bon code que vous pouvez utiliser directement dans vos projets ...


-2

Les outils ci-dessus extraient le pot. Il existe également certains autres outils et commandes pour extraire le fichier jar. Mais AFAIK vous ne pouvez pas obtenir le code java au cas où le code aurait été obscurci.


7
La plus grande réponse
fnc12

-6

supposons que votre fichier JAR se trouve dans C: \ Documents and Settings \ mmeher \ Desktop \ jar et que le nom du fichier JAR est xx.jar, puis écrivez les deux commandes ci-dessous dans l'invite de commande:

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

2> pot xf xx.jar


-6

-Couvrir le fichier .jar en .zip (dans Windows, changez simplement l'extension) -Décompressez le dossier .zip -Vous obtiendrez des fichiers .java complets


3
Pour une petite note sur cette méthode ... Il est vrai que les fichiers jar sont des fichiers zip sophistiqués. Cependant, décompresser un fichier jar produira très probablement des fichiers * .class, c'est-à-dire des fichiers java "compilés". Il est possible de "décompiler" les fichiers de classe en fichiers java normaux. Cette fonctionnalité est incluse dans de nombreux IDE
Daniel Hernandez

cela ne fera que déverrouiller les fichiers de classe
Harshil
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.