一尘不染

\--add-modules仅在编译时使用

java

我正在使用maven和java-9构建项目。我已在pom.xml文件中添加:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${maven-compiler-plugin.version}</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <compilerArgs>
            <arg>--add-modules</arg>
            <arg>java.xml.bind</arg>
        </compilerArgs>
    </configuration>
</plugin>

但仍然要运行该应用程序,我必须像这样运行它:

java -jar --add-modules java.xml.bind my-app.jar

有没有一种方法可以构建应用程序,以便从命令行运行而无需--add-modules java.xml.bind使用Java命令行参数?


阅读 250

收藏
2020-09-09

共1个答案

一尘不染

不久前,我做了这个回答,在此我作为java.se使用Maven
公开Java-9 中非软件包的附加信息进行了回答。

添加的部分专门针对使用独立版本的 java.xml.*API。为了适应这种情况,您可能开始消耗依赖项 jaxb- api:2.3.0 ,可以将其作为模块加载,也可以从类路径执行。您需要进行的更改是将以下内容添加到依赖项列表中:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

这样,您可以确保迁移到该模块的独立API并远离已弃用的代码段。

2020-09-09