2016-06-23 17 views
0

Ich muss ändern org.eclipse.jdt.core.dom.ASTParser Klasse, die in jdt.core JAR-Datei ist. Also habe ich ein Java-Projekt erstellt und das gleiche Paket (org.eclipse.jdt.core.dom) erstellt. aber wenn ich eine neue Instanz dieser Klasse erstellt werden soll bekomme ich diesen Fehler:Ändern org.eclipse.jdt.core.dom.ASTPArser

Exception in thread "main" java.lang.SecurityException: class "org.eclipse.jdt.core.dom.ASTParser2"'s signer information does not match signer information of other classes in the same package at java.lang.ClassLoader.checkCerts(Unknown Source) at java.lang.ClassLoader.preDefineClass(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at typeResolution.TypeResolution.main(TypeResolution.java:80)

Wenn ich meinen Code in einem Plugin-Modus Projekt ausführen Ich habe kein Problem, aber in einem Java-Stand-alone-Projekt, das ich bin diesen Fehler bekommen.

Kann mir jemand Einblick in dieses Problem geben? Vielen Dank.

+0

Fragen zur Fehlersuche (** "Warum funktioniert dieser Code nicht?" **) muss * das gewünschte Verhalten *, * ein spezifisches Problem oder einen Fehler * und * den kürzesten erforderlichen Code * enthalten, um es zu reproduzieren ** in der Frage selbst **. Fragen ohne ** eine klare Problemstellung ** sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve). –

Antwort

0

Das Originalartefakt org.eclipse.jdt.core_xyz.jar ist signiert. Wenn Sie versuchen, dieses JAR-Objekt in Kombination mit Ihrer eigenen modifizierten Klasse zu verwenden, erkennt die JVM, dass die Integrität des signierten JAR-Objekts unterbrochen ist. Sie haben zwei Möglichkeiten:

  • stattdessen nur eine Datei zu ersetzen, das gesamte Gefäß mit eigenen Version
  • umverpacken das ursprüngliche Glas ohne Unterzeichnung

Je nach ersetzen Konfiguration gibt es möglicherweise mehr Wellen, weil andere Plugins wie org.eclipse.jdt.compiler.tool Klassen zu Paketen beisteuern, die auch in org.eclipse.jdt.core ("geteilte Pakete") vorhanden sind, was nur dann OK ist, wenn beide Gläser mit demselben Zertifikat signiert sind e - oder überhaupt nicht signiert.