141 votes

java.lang.UnsupportedClassVersionError : numéro de version Bad dans fichier .class ?

J'obtiens cette erreur quand j'inclus une bibliothèque opensource que j'ai eu à le compiler à partir des sources. Maintenant, toutes les suggestions sur le web pour indiquer que le code a été compilé dans une version et exécutée dans une autre version (nouvelle sur l'ancienne). Cependant, je n'ai qu'une version de JRE sur mon système. Si je exécutez les commandes suivantes:

$ javac -version
javac 1.5.0_18

$ java -version
java version "1.5.0_18"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02)
Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)

et check-in Eclipse pour les propriétés de la bibliothèque java, je reçois 1.5.0_18

Donc, je dois en conclure quelque chose d'autre, à l'intérieur de la classe elle-même, est en train de jeter de l'exception?? Est-il même possible?

186voto

Joshua McKinnon Points 12379

J'ai appris que les messages d'erreur de ce genre sont généralement droit. Quand il n'est pas possible (dans votre esprit) être ce que l'erreur signalée dit, vous allez à la chasse pour un problème dans un autre domaine...seulement pour trouver heures plus tard que le message d'erreur d'origine a en effet droit.

Depuis que vous utilisez Eclipse, je pense que Thilo a droite, la raison La plus probable que vous obtenez ce message, c'est parce que l'un de vos projets est la compilation de 1,6 classes. Il n'a pas d'importance si vous n'avez 1.5 JRE sur le système, parce que Eclipse dispose de son propre compilateur (pas de javac), et ne nécessite qu'une 1.5 JRE pour compiler 1.6 classes. Il peut être bizarre, et un réglage doit être désactivée pour permettre cela, mais j'ai juste réussi à le faire.

Pour le projet en question, vérifiez les Propriétés du Projet (généralement Alt+Entrée), un Compilateur Java section. Voici une image d'un projet configuré pour compiler 1.6, mais avec seulement 1.5 JRE.

enter image description here

9voto

Brent Nash Points 6337

Avez-vous essayé de faire "propre" et puis reconstruire dans Eclipse (Projet->Clean...)?

Êtes-vous en mesure de compiler et d'exécuter avec "javac" et "java" directement à partir de la ligne de commande? Cela fonctionne correctement?

Si vous cliquez droit sur votre projet, allez dans "Propriétés" puis allez dans "Java Build Path", il n'existe aucun suspect entrées en vertu de l'un des onglets? C'est essentiellement votre CLASSPATH.

Dans les préférences d'Eclipse, vous pouvez également double vérifier les "Installé Jre" dans la section "Java" de la section et assurez-vous qu'il correspond à ce que vous pensez qu'il devrait.

Vous avez certainement, soit un rassis .fichier de classe autour de la pose quelque part ou que vous obtenez au moment de la compilation/exécution de décalage dans la version de Java que vous utilisez.

5voto

Thilo Points 108673

Vous compilez avec Eclipse ? Il utilise un compilateur différent (pas javac). Qui ne devrait pas entraîner dans cette erreur (si tout est correctement configuré), mais vous pouvez essayer de le compiler avec javac plutôt.

Si qui corrige le problème, essayez de voir si Eclipse a certains paramètres de compilateur incorrect. L’ai spécifiquement cible Java 5.

3voto

Vinny Points 410

Êtes vous absolument certain qu’il n’y a aucun anciens fichiers .class traîner quelque part dans ce code ?

1voto

Jeshurun Points 7257

Également vérifier les fichiers jar dans votre projet ont été compilés pour une version plus récente de Java. Si ce sont vos propres bibliothèques, vous pouvez corriger cela en modifiant l’attribut de version de cible à javac

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X