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 {...}"

Другие вопросы по тегам