tycho - 将参数“--add-modules”添加到 Tycho 编译器
问题描述
我继承了一个使用 Java 8 构建但使用 Java 10 运行的 Tycho 项目。由于某些原因,它现在也应该使用 Java 10 构建。问题在于所有缺少的 JDK 捆绑包,但有以下例外
[ERROR] The type javax.xml.bind.annotation.XmlElementWrapper cannot be resolved. It is indirectly referenced from required .class files
我现在想添加--add-modules=ALL-SYSTEM
到 Tycho 编译器(就像它已经在*.product文件中一样)。然而,这似乎是不可能的。我试过了:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<argLine>--add-modules=ALL-SYSTEM</argLine>
<compilerArgument>--add-modules=ALL-SYSTEM</compilerArgument>
<compilerArgs><compilerArg>-add-modules=ALL-SYSTEM</compilerArg></compilerArgs>
</configuration>
</plugin>
将依赖项添加到 Maven(我希望这将绕过对导入包的需要)和pomDependencies=consider
:
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.8</version>
<scope>provided</scope>
</dependency>
</dependencies>
Aaand 当然就像只是将它作为 VM 参数传递。没有任何效果。
这个主题的大多数问题只关注这个想法有多愚蠢(它无疑是),但没有时间将项目切换到 Java 10(或更新的东西)。
那么如何向 Tycho 添加编译器参数呢?
解决方案
您可以像这样配置编译器参数:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<compilerArgs>
<arg>--module-path</arg>
<arg>${java.home}/jmods</arg>
<arg>--add-modules</arg>
<arg>java.smartcardio</arg>
</compilerArgs>
</configuration>
</plugin>
推荐阅读
- c++ - 如何删除派生类中基类对象的新对象?
- google-cloud-pubsub - Stackdriver 中的图表与配置阈值之间是否存在差异?
- haskell - 迭代自定义类型并访问haskell中的属性
- c# - Codility 不编译包含 HashSet 和 lambda 的 C# 和 VB 代码
- php - 在 PHP 中生成和存储未转义的字符串
- javascript - Javascript对象可以在构造过程中调用自己的方法吗?
- python - 很难单击激活下拉菜单的单选按钮。使用 Selenium 和 Python
- javascript - var vs let in node(模块范围)
- javascript - 加入时未调用 Discord.js guildMemberAdd 事件
- r - R从TripAdvisor的多个页面中抓取评论