33 votes

Java 7 VerifyError JVM dans Eclipse

Quand je compile mon projet dans eclipse indigo à l'aide du JDK 7, j'obtiens l'erreur suivante dialogue

enter image description here

à la suite de stacktrace

Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 32 in method ... at offset 0
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

J'ai trouvé un bogue correspondant ici et utilisé la solution de contournement proposée de l'utilisation de la jvm option -XX:-UseSplitVerifier , et bien que cela fonctionne, ce bug toujours me confond.

Personne ne sait pourquoi ce qui se passe et pourquoi la solution de contournement...fonctionne?

--Note--

Le projet compile fine à l'aide du JDK 6.

27voto

VonC Points 414372

Bug 353467 parle "à l'aide de -XX:-UseSplitVerifier afin d'activer l'ancien vérificateur".
Qui est compatible avec le JDK TM 6 Adoption du Guide qui décrit cette option comme:

Traditionnelle vérificateur peut être forcé avec l' -XX:-UseSplitVerifier drapeau.

Manquantes ou incorrectes StackMapTable attributs pour la version 50.0 fichiers de classe peut entraîner VerifyError des exceptions.
Outils de réécriture du bytecode dans la version 50.0 fichiers de classe et de ne pas correctement mise à jour de l' StackMapTable peut ne pas vérifier et de déclencher des exceptions.

Ainsi, le commentaire de 2011-10-03 ne souligner que:

AspectJ maintenant auto active précédemment option permettant de créer stackmaps si les classes sont Java7.

1voto

pauwel Points 11

Lorsque j'ai eu ce problème, je l'ai corrigé en supprimant mes bibliothèques système JDK 1.7 du projet et en ajoutant les bibliothèques 1.6 JDK. Je suis allé à nouveau exécuter le projet et je n'ai pas eu l'erreur. Lorsque j'ai ajouté à nouveau les bibliothèques JDK 1.7, cela fonctionne toujours, donc quelque chose dans le "permutation" le fait fonctionner.

0voto

Ayushman Points 152

mre, pouvez-vous partager votre code source (ou un exemple extrait) qui indique cette erreur lors de l'exécution? Je crois que c'est un bogue dans le compilateur Java Eclipse et doit être corrigé.

S'il vous plaît ouvrir un bogue sur le bugzilla eclipse aussi, si vous pouvez fournir l'exemple de code.

0voto

Bob Kerns Points 497

J'ai frappé ce problème dans Juno, mais il résolu par l'installation de la dernière version 4.2 de l'4.2 mise à jour du site ici:

http://www.eclipse.org/ajdt/downloads/

C'est le même @VonC a donné il y a un an -- mais depuis la mise à jour AspectJ est-il maintenant (mais pas dans la dernière Juno référentiel, ni avec ce qui est livré avec le Printemps), il constitue aujourd'hui une réponse.

Mais le crédit à @VonC.

Notez que cela devrait fonctionner pour 3.8 ainsi que 4.2.

0voto

SMJ Points 1

actuellement, mon environnement est jdk 1.7 (j2sdk 1.7 mise à jour 21) avec eclipse 4.2 juno (SR2). Je rencontrais le même problème. Je l’avais donc corrigé, ce qui configurait les arguments de la VM Option '-XX: -UseSplitVerifier', mais il a eu de gros problèmes va déployer un produit basé sur google-app-engine.

enfin j'ai changé java 6 (mise à jour 43)

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