Eclipse Java插件项目中的传递依赖项

时间:2018-03-25 18:18:30

标签: java dependencies java-9 eclipse-oxygen transitive-dependency

看来,我的Eclipse Oxygen 3传递依赖关系在Plugin-Projects中没有得到解决。考虑以下项目,A仅依赖于B,B取决于C: Minimal Project with transitive Dependencies 虽然在JDK 1.8中运行A结果很好(如预期的那样),但在JDK 9中我得到了众所周知的

Exception in thread "main" java.lang.NoClassDefFoundError: c/C
    at b.B.<init>(B.java:9)
    at a.A.main(A.java:8)
Caused by: java.lang.ClassNotFoundException: c.C
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    ... 2 more

我知道,我没有声明任何模块,但我想,省略它们只是保持项目不变,即使在JDK 9中也是如此。 当我直接在A MANIFEST.MF中导入项目C时,所有工作都与JDK 1.8中的一样。 那么如何在不声明模块的情况下运行项目呢?

1 个答案:

答案 0 :(得分:2)

您可以修改项目B中的MANIFEST.MF以将其依赖项重新导出到项目C:

  • 在MANIFEST-Editor
  • 中从项目B打开MANIFEST.MF
  • 切换到“依赖关系”选项卡
  • 选择项目C的依赖项,然后单击&#34;属性...&#34;
  • 选择&#34;重新导出此依赖关系&#34;

请记住,此更改还将使项目C中的类在项目A中可用,在使用这些类时创建从A到C的显式依赖项。