JLink找不到module-info.class文件。

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 能够看到模块存在,但找不到我的 module-info 文件。我是否忽略了一些使用 maven 的事项,使得该文件位于正确的位置?

1个回答

0

我不清楚Maven如何处理Java模块,因此无法提供完整的答案。但是我在您的图表中没有看到名为“foo”的模块文件夹,这将使查找foo的module-info.class变得困难。一个正确的模块需要同时具有一个名为your-module-name的文件夹和一个包含“module your-module-name {...}”内容的module-info。

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

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

这假设你的 module-info.class 是 "module foo{...}"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接