eclipse - 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
或者这个错误还有其他原因吗?
谢谢。
解决方案
您可以通过三种方式从 java.se.ee 聚合器模块中包含模块,JDK 10 中的编译或运行时不包含该模块。(从 JDK 11 开始,这些模块将从 JDK 中删除)。
- 最简单的是使用命令行选项 --add-modules java.xml.bind。这将使用仍然包含在 JDK 中的版本。
- 找到一个 JAXB 实现 jar。Maven 中心是一个很好的地方,还有一个 JSR 222 (JAXB) 的参考实现,它是 Java Web 服务开发包 ( http://www.oracle.com/technetwork/java/webservicespack的一部分-jsp-140788.html),但这已经很老了,可能不是最佳选择。您可以使用 --upgrade-module-path {path} 将下载 jar 的位置添加到升级模块路径
- 2 的替代方法是简单地将包含 JAXB 的 jar 放在类路径上。
我不熟悉 Tycho,但您需要弄清楚如何在其配置中使用其中一种方法。
推荐阅读
- java - 使用 Accounts.UUID 和 UUID = 时的 MySQL 语法问题,有两个表
- python - 在熊猫中水平执行 pd.concat 并在列上匹配的最佳方法是什么?
- angular - Jasmine-Karma UnitTest 运行单一与运行所有
- java - 线程“主”java.lang.NoClassDefFoundError 中的异常:org/joda/time/DateTime Spark
- sql - Laravel/SQL:列等于 NOT 和 NULL
- javascript - Javascript:将http请求正文读取为字节数组
- php - 在 *.tpl 文件中获取购物车内容
- c# - 无法从 C# 控制台应用程序中的 SOAP 1.2 Web 请求获得响应
- r - 加速包含 coxph 函数调用的 for 循环
- reactjs - 无法根据第一个数组的值显示第二个数组的数据