web-dev-qa-db-fra.com

comment obtenir Java code source à partir d'un fichier war?


Je n'ai pas le dernier code source mais le fichier de guerre (à jour) est déployé sur le serveur.

Veuillez suggérer les meilleures façons
1) Récupérer le code source de war/ear
2) Comparer et fusionner/mettre à jour le code source disponible avec le code présent dans war/ear mais manquant dans le code source disponible (j'utilise Eclipse IDE)

Merci d'avance

6
Karthik

Les fichiers de guerre sont essentiellement des fichiers Zip, ils sont donc faciles à extraire. (en utilisant décompresser ou simplement renommer le fichier) Ensuite, vous pouvez utiliser un décompilateur Java comme JD. Mais vous n'obtiendrez pas le code original Java comme compilateur) fait beaucoup d'optimisation. Mais cela devrait vous donner un bon point de départ

11
zeisi

Une fois que vous avez extrait les classes des fichiers EAR/WAR/Jars, utilisez JAD pour décompiler le code qui vous intéresse pour revenir à la source: http://varaneckas.com/jad/

Je ne suis pas sûr qu'il existe un outil prêt à l'emploi qui compare/diffère votre source d'origine avec la source décompilée produite à partir de quelque chose comme JAD. Gardez également à l'esprit que la décompilation des classes vers la source ne produira pas une source qui semble identique au code source d'origine - le style de code sera différent, peut-être même une certaine structure du code. Il va être difficile de faire une différence entre la source d'origine et la source décompilée.

Si vous avez la source d'origine mais pas la source du code actuellement déployé, une meilleure question est peut-être de demander "pourquoi pas"? S'il manque quelque chose dans votre processus de génération où vous ne suivez pas la source utilisée pour chaque génération, c'est peut-être un problème plus facile à résoudre pour aller de l'avant, plutôt que d'essayer de faire quelque chose de maladroit et d'erreurs comme un diff entre une autre source et source décompilée?

3
Kevin Hooke

La réponse exacte: il n'est pas possible d'obtenir le code source d'origine (.Java fichiers) à partir d'une war par opposition à une jar (Java archive). Lorsque vous créez un fichier jar, vous pouvez décider si vous souhaitez inclure le .Java des dossiers. Seul un décompilateur Java peut aider, voir les autres réponses.

3
Timo

En utilisant JD GUI vous pouvez le code source avec Java code, mais vous devrez

0
user1400290

Dans le dossier war, sous un module spécifique - En fonction de la hiérarchie de votre projet (si le projet maven - cette configuration sera disponible dans Pom.xml - il définira quel chemin et quel nom de pot) vous aurez les fichiers Core JAR de chaque module.

Ouvrez ces fichiers jar en utilisant n'importe quel décompilateur, vous pourrez y trouver les fichiers classe/Java.

0
Arasn