首页 > 解决方案 > Eclipse Tycho:使用 java.xml.bind 模块时出现编译错误?

问题描述

我认为这个问题与这篇博文中描述的问题相同,但我在 Java 10 上得到了这个:我有一个 Eclipse RCP 应用程序,它使用 Java 10 功能但也使用 JAXB 类。在 Eclipse 中,我必须将java.xml.bind模块添加到我的项目的构建路径配置中(如此所述),以消除编译错误。

但是,在使用 Tycho 1.2.0 构建产品时,我收到以下错误,正是针对使用 JAXB 的类:

[ERROR] Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:1.2.0:compile (default-compile) on project epd-editor: Compilation failure: Compilation failure:
[ERROR] ...app\src\app\editors\XmlPage.java:
[ERROR] package app.editors;
[ERROR] ^
[ERROR] Internal compiler error: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.lookup.BinaryModuleBinding.create(BinaryModuleBinding.java:64)
[ERROR] java.lang.NullPointerException
[ERROR] at org.eclipse.jdt.internal.compiler.lookup.BinaryModuleBinding.create(BinaryModuleBinding.java:64)
[ERROR] at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getModuleFromAnswer(LookupEnvironment.java:427)
[ERROR] at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForTypeFromModules(LookupEnvironment.java:367)
[ERROR] at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:228)
[ERROR] at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:105)

有没有办法配置 Tycho 编译器插件,以便它可以看到类似的模块,java.xml.bind或者这个错误还有其他原因吗?

谢谢。

标签: eclipsemaveneclipse-rcptychojava-10

解决方案


您可以通过三种方式从 java.se.ee 聚合器模块中包含模块,JDK 10 中的编译或运行时不包含该模块。(从 JDK 11 开始,这些模块将从 JDK 中删除)。

  1. 最简单的是使用命令行选项 --add-modules java.xml.bind。这将使用仍然包含在 JDK 中的版本。
  2. 找到一个 JAXB 实现 jar。Maven 中心是一个很好的地方,还有一个 JSR 222 (JAXB) 的参考实现,它是 Java Web 服务开发包 ( http://www.oracle.com/technetwork/java/webservicespack的一部分-jsp-140788.html),但这已经很老了,可能不是最佳选择。您可以使用 --upgrade-module-path {path} 将下载 jar 的位置添加到升级模块路径
  3. 2 的替代方法是简单地将包含 JAXB 的 jar 放在类路径上。

我不熟悉 Tycho,但您需要弄清楚如何在其配置中使用其中一种方法。


推荐阅读