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)?

hiba
la source
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.

Adarshr
la source
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

élachance
la source
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

Dharam
la source
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.

Matthew Willis
la source
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.

enthousiaste
la source
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."

nitin angadi
la source
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 ...

Nik theGeeK
la source
-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.

Vishal
la source
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

Manas
la source
-6

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

Pavan T
la source
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