2017-10-10 29 views
3

使用以下最低pom.xml探索maven-jdeps-plugin:3.1.0與Java9: -錯誤:log4j的-API-2.9.0.jar是一個多版本的jar文件,但--multi釋放選項未設置

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

I C與Oracle幫助中心記錄的jdeps:jdkinternals目標在Maven的官方站點上詳細描述的目標或者jdeps tool中的--multi-release標誌無關。

有人可以在這個實施maven-jdeps-plugin一些燈光?有沒有辦法解決這個問題(設置--multi-release選項)?

+0

你是如何將你的錯誤信息連接到Log4J作爲MR-JAR的,並且這是導致問題的原因? – Nicolai

+0

但不是你的問題顯示的輸出。 :) – Nicolai

+0

@Nicolai現在完成日誌的問題,並添加到它'INFO'是它的閱讀水平'錯誤'!(有些東西肯定是搞砸了) – nullpointer

回答

2

這是用戶錯誤。請輸入jdeps - ?在命令行上。你會看到你需要輸入

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

「jdeps」是正在執行的命令。 「 - ?」顯示包含所有選項的命令的幫助文本。你也可以做「jdeps --help」 – rgoers

+0

雖然我讓maven相關的bug打開。由於日誌記錄似乎混雜在這個maven中。如果你能將' - ?'更新爲'--help',那麼答案會很好。 – nullpointer

1

最終在comment from Nicolai的幫助下。我可以得出結論分離出這種成兩個不同的問題: -

  1. 次要問題上的maven-jdeps-plugin的一部分,我已經提高到了跟蹤,在其Logging jdeps Errors as INFO.

  2. 另一方面,上述錯誤的根本原因,當我嘗試執行命令jdepslog4j-api-2.9.1.jar as-

    ➜ jdeps ~/.m2/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar 
    

    我最終得到了以下錯誤: -

    Error: log4j-api-2.9.1.jar is a multi-release jar file but --multi-release option is not set

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

被跟蹤編輯: - 使用命令行工具,正確的方法是通過@rgoers

更新回答: - 鏈接的Maven插件漏洞被轉換爲新的功能要求,並應可能被包含在未來的版本的插件。