jlink не находит module-info.class
Я использую проект 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, чтобы получить этот файл в нужном месте?
1 ответ
Мне не ясно, как 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 {...}"