错误:log4j-api-2.9.0.jar是一个多版本jar文件,但未设置--multi-release选项

时间:2017-10-10 08:43:55

标签: java maven java-9 jdeps maven-jdeps-plugin

使用以下最小pom.xml使用Java9探索maven-jdeps-plugin:3.1.0: -

<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'

我无法在Maven官方网站上详细列出的jdeps:jdkinternals目标中找到与--multi-release旗帜相关的更多相关信息,甚至在Oracle帮助中记录的jdeps tool中心。

有人可以在maven-jdeps-plugin中对这个实现有所了解吗?有没有办法解决这个问题(设置--multi-release选项)?

3 个答案:

答案 0 :(得分:4)

这是用户错误。请输入jdeps - ?在命令行上。你会看到你需要输入

jdeps --multi-release 9 ~/.m2/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar

答案 1 :(得分:1)

关于插件本身,以下配置有效。

  <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>

答案 2 :(得分:0)

最终在comment from Nicolai的帮助下。我最后可以将其分为两个不同的问题: -

  1. maven-jdeps-plugin我向其跟踪器提出的小问题, Logging jdeps Errors as INFO.

    <击>

  2. <击>
  3. 另一方面,当我尝试在jdeps上执行命令log4j-api-2.9.1.jar as -

    时,上述错误的根本原因
    ➜ jdeps ~/.m2/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar
    

    我最终收到以下错误: -

      

    错误:log4j-api-2.9.1.jar是一个多版本jar文件,但未设置--multi-release选项

    可以在 --multi-release option not set for the multi-release jar.

    跟踪此内容

    <击>

  4. 编辑 : - @rgoers

    回答了使用命令行工具的正确方法

    更新 : - 链接的maven插件错误会转换为新的功能请求,并且可能会包含在插件的未来版本中。