首页 > 解决方案 > 将参数“--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 添加编译器参数呢?

标签: 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>

另请参阅此问题和此错误报告。他们处理告诉 java 编译器查找模块的问题。


推荐阅读