Ошибка: log4j-api-2.9.0.jar — это файл jar с несколькими выпусками, но параметр --multi-release не установлен

Изучение maven-jdeps-plugin:3.1.0 с помощью Java9 с использованием следующих минимальных pom.xml: -

<dependencies>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.9.0</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
               <source>1.9</source>
               <target>1.9</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jdeps-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>jdkinternals</goal> <!-- verify main classes -->
                        <goal>test-jdkinternals</goal> <!-- verify test classes -->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

При выполнении

mvn install

В итоге я получаю подробную ошибку, которая гласит следующее: -

[INFO] Error: log4j-api-2.9.0.jar is a multi-release jar file but --multi-release option is not set
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.389 s
[INFO] Finished at: ...
[INFO] Final Memory: 12M/41M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jdeps-plugin:3.1.0:jdkinternals (default) on project maven-jigsaw: 
[ERROR] Exit code: 2
[ERROR] Command line was: /bin/sh -c '/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/bin/jdeps' '-cp' '.../.m2/repository/org/apache/logging/log4j/log4j-api/2.9.0/log4j-api-2.9.0.jar' '../maven/target/classes'

Я не смог найти много релевантности, связанной с флагом --multi-release, ни в jdeps:jdkinternals< /a> цель подробно описана на официальном сайте Maven или даже в jdeps инструменте задокументировано в справочном центре Oracle.

Может ли кто-нибудь пролить свет на эту реализацию в maven-jdeps-plugin? Есть ли способ исправить это (установить параметр --multi-release)?


person Naman    schedule 10.10.2017    source источник
comment
Как вы установили связь из своего сообщения об ошибке с тем, что Log4J является MR-JAR, и что это вызывает проблему?   -  person Nicolai Parlog    schedule 10.10.2017
comment
@Nicolai Завершите регистрацию вопроса сейчас, и добавьте к нему INFO уровень, на котором он читает это Error!! (что-то напутано точно)   -  person Naman    schedule 10.10.2017
comment
Ах, это выглядит так, как будто JDeps создает сообщение об ошибке, которое подключаемый модуль подхватывает и случайно регистрирует как INFO. Может быть. Попробуйте получить сообщение, просто выполнив JDeps в Log4J-JAR.   -  person Nicolai Parlog    schedule 10.10.2017


Ответы (2)


Это ошибка пользователя. Пожалуйста, введите jdeps-? в командной строке. Вы увидите, что вам нужно ввести

jdeps --multi-release 9 ~/.m2/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar
person rgoers    schedule 28.10.2017
comment
jdeps — это выполняемая команда. -? отображает текст справки для команды, включая все параметры. Вы также можете сделать jdeps --help - person rgoers; 28.10.2017
comment
Хотя я открываю ошибку, связанную с maven. Поскольку ведение журнала кажется перепутанным в maven для этого. И если вы можете обновить -? до --help, это будет хорошо в ответе. - person Naman; 28.10.2017
comment
Этот ответ был бы лучше, если бы вы объяснили, что делает предлагаемое решение и почему оно решает проблему! - person Lii; 09.11.2020
comment
Этот ответ предполагает, что jdeps выполняется напрямую, а не из maven-jdeps-plugin (как четко указано в начале вопроса). - person MikeOnline; 09.06.2021

Что касается самого плагина, работает следующая конфигурация.

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jdeps-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
      <execution>
        <goals>
          <goal>jdkinternals</goal> <!-- verify main classes -->
          <goal>test-jdkinternals</goal> <!-- verify test classes -->
        </goals>
      </execution>
    </executions>
    <configuration>
      <multiRelease>9</multiRelease> <!-- Check this out -->
    </configuration>
  </plugin>
person Jin Kwon    schedule 31.05.2019