1

我在我的办公室使用 eclipse 32bit 并开发一个 java 代码来解析 JavaAST,但是当我尝试在家里运行该程序时,我得到了这个异常。我还提供了发生异常的位置。

如何解决此异常?

例外线

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

安全异常

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)
4

2 回答 2

1

请参阅 Java 文档中的此页面:在 JAR 文件中密封包。这是您看到的错误的可能原因。

简而言之,当一个 jar 文件被密封时,JVM 假定该 jar 包中的每个类都必须在该 jar 中定义。如果你的项目的其他部分有一些代码属于同一个包,它会将 is 视为安全异常。

检查您在家里运行的代码的结构是否与您在办公室运行的代码相似。您可能在常规.java文件中定义了一些可以从 CLASSPATH 访问的类,这些类属于该 jar 文件中定义的相同包。尝试从您的项目中删除任何不必要的依赖项(使其看起来尽可能接近您的工作环境),看看是否能解决您的问题。

编辑:我可能误以为;那么,相关文档是Signing and Verifying JAR Files。可能的原因和可能的解决方案保持不变,但......

于 2012-05-11T05:27:46.687 回答
1

此错误是由两次添加 jar 引起的。如果您添加多个共享某些类的 jar,它将以您现在看到的错误结束。

我建议您尝试删除并发 jar,然后测试您的代码。

希望这可以帮助!

于 2013-04-23T17:33:54.637 回答