Excepción de seguridad de Java para Java AST

Estoy usando Eclipse de 32 bits en mi oficina y desarrollando un código Java para analizar JavaAST, pero cuando intento ejecutar el programa en casa obtengo esta excepción. También estoy proporcionando dónde se produjo la excepción.

¿Cómo puedo resolver esta excepción?

Línea de excepción

ASTParser parser = ASTParser.newParser(AST.JLS3);

Excepcion de seguridad

Exception in thread "main" java.lang.SecurityException: class "org.eclipse.core.runtime.Plugin"'s signer information does not match signer information of other classes in the same package
    at java.lang.ClassLoader.checkCerts(ClassLoader.java:943)
    at java.lang.ClassLoader.preDefineClass(ClassLoader.java:657)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:785)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at org.eclipse.jdt.core.dom.ASTParser.initializeDefaults(ASTParser.java:235)
    at org.eclipse.jdt.core.dom.ASTParser.<init>(ASTParser.java:218)
    at org.eclipse.jdt.core.dom.ASTParser.newParser(ASTParser.java:118)
    at tester.runTest.main(runTest.java:33)

preguntado el 11 de mayo de 12 a las 06:05

¿Recompiló las clases en casa o simplemente colocó archivos binarios .class? -

Además, verifique este (posible duplicado) - encontrado justo después de responderlo yo mismo (evidencia de que mi respuesta es probablemente correcta, aunque creo que también son posibles otras causas) -

2 Respuestas

Consulte esta página sobre la documentación de Java: Sellado de paquetes dentro de un archivo JAR. Esa es la causa probable del error que estás viendo.

En resumen, cuando se sella un archivo jar, la JVM asume cada La clase de los paquetes de ese jar debe definirse dentro de ese jar. Si hay algún código en otras partes de su proyecto que pertenece al mismo paquete, se tratará como una excepción de seguridad.

Compruebe si el código que está ejecutando en casa está estructurado de manera similar al que está ejecutando en la oficina. Es posible que tenga algunas clases definidas en regular .java archivos, accesibles desde su CLASSPATH, que pertenecen a los mismos paquetes definidos en ese archivo jar. Intente eliminar cualquier dependencia innecesaria de su proyecto (para que se parezca lo más posible a su entorno de trabajo) y vea si eso resuelve su problema.

Edit: podría haberme equivocado firmado por sellado; los documentos relevantes, entonces, es Firma y verificación de archivos JAR. Sin embargo, la causa probable y la posible solución siguen siendo las mismas...

contestado el 11 de mayo de 12 a las 06:05

Gracias era la duplicación. Tenía dos frascos del mismo contenido. - Sravan Kumar

De todos modos, esa fue una información muy útil. Gracias. Pero ahora me pregunto por qué mi sistema de oficina no tiene ese problema aunque tenía el mismo repositorio para las dependencias. - Sravan Kumar

Este error se produce al agregar frascos dos veces. Si agrega más de un jar que comparte algunas clases, terminará con el error que está viendo ahora.

Le sugiero que intente eliminar el contenedor concurrente y luego pruebe su código.

¡Espero que esto ayude!

Respondido 23 Abr '13, 18:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.