2010-04-29 6 views
0

J'ai un ancien projet dans Eclipse 2.1 et compilé avec un JDK 1.4.2_12. Je veux mettre à jour la version d'Eclipse vers Eclipse Galileo.Compilation Java avec deux versions d'Eclipse

J'ai importé mon projet et définir le niveau de compilation à 1.4 et je suis aussi mis à jour mon chemin de construction à utiliser le JDK.

Le problème est que lorsque je compare les fichiers compilés dans le dossier des classes dans les deux versions d'Eclipse, la somme de contrôle MD5 sont différents.

Dois-je m'inquiéter de ce fait ou est-ce normal?

Répondre

3

Ceci est normal. Le compilateur Eclipse est libre de changer la structure du fichier de classe tant qu'il est conforme à la spécification JVM 1.4. Si un 1.4 JVM chargera et exécutera la classe, je ne vois aucun problème.

Pour les cas vraiment pédant, vous devez faire votre dernière builds avec un JDK qui correspond à la JRE, et non le compilateur Eclipse.

+1

Ceci est très vrai, j'ai souvent trouvé des différences dans les fichiers de classe compilés entre l'utilisation du compilateur eclipse et javac même pour la même version JDK. Si vous vous sentez aventureux, vous pouvez comparer la sortie de javap' sur le fichier de classe (augmenter le maximum de verbosité), et ensuite vérifier que les programmes compilés font la même chose. Cependant, cela nécessitait une connaissance intime du format de la classe compilée et des bytecodes java, et c'est une courbe d'apprentissage abrupte. – Geoff

0

Tant que le programme fonctionne je ne pense pas que vous devez vous inquiéter !!! Comme MD5 serait unique pour chaque entité, et il représente la valeur Hash.

0

C'est normal, mais je m'assurerais de faire une reconstruction complète de toute façon (en effaçant éventuellement tous les fichiers de classe existants). Mon expérience avec Eclipse est que le constructeur incrémental ne réagit pas bien aux situations inattendues.