Code d'octet vers le code source Java
Est-il possible de convertir un .class
fichier à .java
fichier?
Comment cela peut-il être fait?
Ce sujet de l'exactitude du code extrait de cette option?
source d'informationauteur Sachin Chourasiya
Vous devez vous connecter pour publier un commentaire.
C'est possible. Vous avez besoin d'un Java Decompiler pour ce faire.
Vous trouverez surtout, il va faire un étonnamment bon travail. Ce que vous obtiendrez est valide
.java
fichier à compiler à la.class
fichier mais ce.java
fichier ne sera pas forcément le même que le code source d'origine. Des choses comme les boucles pourrait en sortir différemment, et tout ce qui est de la compilation, comme les génériques et les annotations ne sera pas re-créé.Vous pourriez avoir un problème si le code a été obscurcis. C'est un processus qui modifie les fichiers de classe pour la rendre difficile à décompiler. Par exemple, la classe et les noms de variables sont modifiées afin d'être tous semblables de sorte que vous finirez avec un code comme
aa.a(ab)
au lieu deemployee.setName(name)
et il est très difficile de travailler sur ce qu'il se passe.Je me souviens à l'aide de JAD de le faire, mais je ne pense pas que ce est activement maintenu de sorte qu'il peut ne pas fonctionner avec des versions plus de Java. Un Recherche Google pour java decompiler vous donnera beaucoup d'options.
Oui, essayez de JAD Java Decompiler
Ajoutant à la réponse à la question précédente: récemment, une nouvelle vague de décompilation a été à venir, à savoir Procyon, CFR, JD, Fernflower
Voici une liste de moderne la décompilation de Mars, 2015:
Vous pouvez tester au-dessus de mentionner la décompilation en ligne, aucune installation n'est nécessaire et de faire votre propre choix instruit.
Java décompilation dans le cloud: http://www.javadecompilers.com/
Ceci est possible en utilisant l'une des Java décompilation. Puisque vous travaillez à partir de l'octet de code qui peut avoir été optimisé par le compilateur (inlining des variables statiques, restructuration par contrôle de flux, etc) ce que vous obtenez peut-être pas exactement le même que le code qui a été à l'origine compilé, mais il sera fonctionnellement équivalent.
C'est possible, mais le code que vous obtiendrez peut-être incorrect. Recherche pour certains de Java décompilation.
C'est toujours possible. Recherche pour "java désassembleur".
Mais les commentaires du code source et des variables temporaires ne seront pas disponibles.
Si vous décompiler une classe et voir le code est trop complexe avec des noms de variables et les noms de méthode comme un,b,c... ce qui signifie que le projet est obscurci.
Pas exactement un décompilateur, mais le Le JDK contient javap, un désassembleur:
En fonction de votre cas d'utilisation, il peut toujours être intéressant de savoir ou de l'utilisation.
De constater que les résultats de fichier de classe décompilation dépendent de l'information incluse dans un fichier de classe. Si je me souviens bien, inclus les informations de débogage (voir -g drapeau de javac) est important, surtout pour le nommage des variables et la comme.
J'ai été en utilisant JAD, mais a changé plus tard pour un autre, ce qui à mon avis est le meilleur - ici
DJ est facile à utiliser java decompiler . Il suffit d'ouvrir toute .fichier de classe et il va vous montrer ses
java
code.Aussi, vous pouvez utiliser jadClipse plugin pour eclipse directement décompiler le .classe en .java
What about the correctness of the code extracted from this option?
Dans tous les cas, le code qui sera généré par java decompiler ne sera pas le même comme il a été écrit dans l'original de la classe java. Comme il décode seulement le bytecode en code java. La seule chose que vous pouvez être sûr, c'est que la sortie sera la même que la sortie de l'original du code java.