当前位置: 首页 > 面试题库 >

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

习和通
2023-03-14
问题内容

我正在使用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命令行参数?


问题答案:

不久前,我做了这个回答,在此我作为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并远离已弃用的代码段。



 类似资料:
  • 由于IntelliJ,我发现需要将以下选项传递给:

  • 问题内容: 我需要使用已“定制”的特殊JRE批处理编译。 Eclipse可以使用此JRE编译类,但是我需要在Eclipse之外制作一个构建脚本。 Eclipse使用什么方法在没有JDK的情况下生成.class文件? 问题答案: Eclipse具有其自己的编译器,其原因如下: 增量编译(可以仅编译项目的更改部分,这可能意味着比刚刚保存的文件数量更多,例如,当您更改某些全局变量时) 即使代码包含错误,

  • 我在我的JRXML中使用我的应用程序A的一些对象,如下所示: 使用iReport,我已经将我的目标/类目录添加到类路径,每个想法都可以。 现在,当我尝试用maven(mvn clean install)编译JRXML时,我遇到了一个错误: 当我的构建失败时,maven已经编译了目标/类中的所有类。我不明白为什么maven找不到EnumOne、EnumTwo和Test2DTO,而它却能找到另一个。

  • 问题内容: 我只想编译源目录中的选定文件或目录(包括子目录)。我非常确定可以使用of 的配置来完成此操作,但是由于它仍将所有类都编译为,因此它似乎并没有达到我的预期。真正奇怪的是,Maven的输出表明该设置实际上已完成其工作,原因是: 我有: 但没有编译器的配置,我有: 但是在这两种情况下,所有14个类都被编译为我提到的那样。您能解释一下还是建议另一种仅编译选定文件的解决方案? 问题答案: 3类简

  • 我知道这听起来像是一个奇怪的“问题”,但请坚持住。 我有一个支持OpenGL 3.3的显卡。< br >但是,我正在编写针对OpenGL 2.0的代码,因此也是针对1.1版的代码。< br >我有以下GLSL代码:< br > 如您所见,我已将GLSL版本指定为#version 110。 您可能还注意到,我对vec4位置使用了“in”关键字 该关键字在指定的GLSL版本中不可用,但它在我的图形卡(

  • 问题内容: 考虑下面的Java 方法测试。请注意,我从这个有用的答案中借用了代码。 但是,请注意,会有一个试图把一个时进入。 输出: 可以通过Java泛型在编译时防止此错误吗? 问题答案: 之所以存在,恰恰是因为Java的类型系统无法正确处理这种情况(IIRC,在泛型出现之前,以与集合框架相同的方式改造数组为时已晚)。 因此,通常无法在编译时防止此问题。 当然,您可以创建内部API来包装此类操作,