我需要修改jdt.core jar文件中的 org.eclipse.jdt.core.dom.ASTParser 类。所以我创建了一个java项目,并创建了相同的包(org.eclipse.jdt.core.dom)。但是当我想创建这个类的新实例时,我得到了这个错误:
线程“main”中的异常java.lang.SecurityException:class “org.eclipse.jdt.core.dom.ASTParser2”的签名者信息没有 匹配同一个包中其他类的签名者信息 java.lang.ClassLoader.checkCerts(未知来源)at java.lang.ClassLoader.preDefineClass(未知来源)at java.lang.ClassLoader.defineClass(未知来源)at java.security.SecureClassLoader.defineClass(未知来源)at java.net.URLClassLoader.defineClass(未知来源)at java.net.URLClassLoader.access $ 100(未知来源)at java.net.URLClassLoader $ 1.run(未知来源)at java.net.URLClassLoader $ 1.run(未知来源)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(未知来源)at java.lang.ClassLoader.loadClass(未知来源)at sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)at java.lang.ClassLoader.loadClass(未知来源)at typeResolution.TypeResolution.main(TypeResolution.java:80)
当我在插件模式项目中运行我的代码时,我没有问题,但在java独立项目中,我收到此错误。
任何人都可以让我深入了解这个问题吗?感谢。
答案 0 :(得分:0)
原始工件org.eclipse.jdt.core_xyz.jar
已签名。当您尝试将该jar与您自己的已修改类一起使用时,JVM将检测到已签名jar的完整性已被破坏。
您有两种选择:
根据您的配置,可能会有更多的涟漪,因为像org.eclipse.jdt.compiler.tool
这样的其他插件会为org.eclipse.jdt.core
(“拆分包”)中也存在的包提供类,只有两者都可以罐子用相同的证书签名 - 或者根本没有签名。