修改org.eclipse.jdt.core.dom.ASTPArser

时间:2016-06-23 04:18:43

标签: java eclipse abstract-syntax-tree eclipse-jdt

我需要修改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独立项目中,我收到此错误。

任何人都可以让我深入了解这个问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

原始工件org.eclipse.jdt.core_xyz.jar已签名。当您尝试将该jar与您自己的已修改类一起使用时,JVM将检测到已签名jar的完整性已被破坏。 您有两种选择:

  • 而不是只替换一个文件,用你的文件替换整个jar 自己的版本
  • 重新打包原始jar ,无需签名

根据您的配置,可能会有更多的涟漪,因为像org.eclipse.jdt.compiler.tool这样的其他插件会为org.eclipse.jdt.core(“拆分包”)中也存在的包提供类,只有两者都可以罐子用相同的证书签名 - 或者根本没有签名。