3

我正在使用带有布局的 Maven 项目

src
  main
    java
      <some-package-name>
       module-info.java

我使用的唯一插件是 maven-compiler-plugin,版本 3.7.0。

 <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>9</source>
                <target>9</target>
            </configuration>
        </plugin>
     </plugins>
  </build>

当我运行命令时 jlink --module-path $JAVA_HOME/jmods:target --add-modules foo --output jre ,输出是Error: Two versions of module foo found in target (foo.jar and classes)

但是当我运行jlink --module-path $JAVA_HOME/jmods:target/foo.jar --add-modules foo --output jre它说Error: Module foo not found

所以 jlink 能够看​​到模块存在,但找不到我的模块信息。maven 是否缺少一些东西来将该文件放在正确的位置?

4

1 回答 1

0

我不清楚 Maven 如何处理 java 模块,所以我无法提供完整的答案。但是我在您的图表中看不到模块文件夹“foo”,这将导致很难找到 foo 的 module-info.class。一个合适的模块需要一个名为 your-module-name文件夹和一个内容为“module your-module-name{...}”的模块信息

src
   main
      java
         foo
            module-info.class
            the-compiled-java-classes-of-your-application  

类似上述结构的东西应该是朝着正确方向迈出的一步。

这假设您的 module-info.class 是“module foo{...}”

于 2018-08-20T03:14:32.700 回答