java - para - eclipse.ini set jdk
Java 7 JVM VerifyError en Eclipse (5)
Cuando tuve este problema, lo solucioné eliminando las bibliotecas de mi sistema JDK 1.7 del proyecto y agregué las bibliotecas de 1.6 JDK. Fui a ejecutar el proyecto nuevamente y no obtuve el error. Cuando agregué las bibliotecas JDK 1.7 de nuevo, todavía funciona, por lo que algo en el ''intercambio'' lo hace funcionar.
Cuando compilo mi proyecto en eclipse índigo usando JDK 7, aparece el siguiente diálogo de error
con la siguiente 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)
He encontrado un error relevante here y usé la solución sugerida para usar la opción jvm -XX:-UseSplitVerifier
y aunque funciona, este error todavía me confunde.
¿Alguien sabe por qué está sucediendo esto y por qué la solución ... funciona?
--Nota--
El proyecto compila bien usando JDK 6.
Llegué a este problema en Juno, pero lo resolví instalando la última versión 4.2 del sitio de actualización 4.2 aquí:
Es la misma que @VonC dio hace un año, pero dado que el AspectJ actualizado está allí ahora (pero no en el último repositorio de Juno ni con lo que se envía con Spring), ahora constituye una respuesta.
Pero crédito a @VonC.
Tenga en cuenta que esto debería funcionar para 3.8 y 4.2.
actualmente, mi entorno es jdk 1.7 (j2sdk 1.7 actualización 21) con eclipse 4.2 juno (SR2) tuve el mismo problema, así que lo arreglé y configuré los argumentos de VM Opción ''-XX: -UseSplitVerifier'' pero ha tenido un gran problema cuando implementará un producto basado en google-app-engine.
finalmente cambié java 6 (actualización 43)
mre, ¿puedes compartir tu código fuente (o una muestra extraída) que muestra este error al ejecutarse? Creo que esto es un error en el compilador de eclipse java y necesita ser reparado.
Abra un error en el eclipse bugzilla también, si puede proporcionar el código de muestra.
El error 353467 habla sobre "usar -XX:-UseSplitVerifier
para activar el verificador antiguo".
Esto es consistente con la Guía de adopción JDK TM 6 que describe esa opción como:
El verificador tradicional puede forzarse con el
-XX:-UseSplitVerifier
.Los atributos
StackMapTable
faltantes o incorrectos para los archivos de clase de la versión50.0
pueden dar como resultado excepciones deVerifyError
.
Las herramientas que reescriben bytecode en los archivos de clase de la versión50.0
y no actualizan correctamente laStackMapTable
pueden no verificar y desencadenar excepciones.
Entonces, el comentario de 2011-10-03 señala que:
AspectJ ahora activa automáticamente la configuración previamente opcional para crear mapas de acumulación si las clases son Java7.