2017-10-10 79 views
3

從我的initial question中分離出來,假設這是足夠通用的。如何在使用工件檢查之前如果它是多版本的jar。如何檢查一個罐子是否是多版本

Multi-Release: true 

我知道它可以手動尋找到罐子的上述屬性的META-INFMANIFEST.MF,但有一個命令行選項可用於此?

也許我錯過了一些已經存在的一些其他名字或盲目的事情非常明顯。但我試過在jarjava工具中尋找這樣一個選項,也沒有成功。

+0

當我尋找一種窺探JARs清單的方法時,我也沒有發現任何解決方案。我認爲沒有辦法[解壓縮](https://stackoverflow.com/a/46662468/2525313)。 – Nicolai

+3

Nicolai是正確的,'jar'工具不提供快速查看JAR文件是否爲MR JAR的選項。最簡單的方法是使用'jar --file = --list'並在列表中查找META-INF /版本。是的,在某些情況下,有人會在清單中添加沒有Multi-Release屬性的版本部分。 –

回答

4

jar只在創建和更新過程中支持清單文件的特殊操作。您可以使用此度日:

unzip -p file.jar META-INF/MANIFEST.MF | grep "Multi-Release: true" 

除此之外,jar文件包括以下新的方法,可能是有用的:)

布爾isMultiRelease(:返回true,當這個JAR文件是一個多版本JAR文件。

+3

也許你應該補充說這隻適用於Linux。 :) – Nicolai

+0

不是我正在尋找什麼。至於類似的問題,我不得不在提到的問題中提及遍歷jar內容。同樣如@Nicolai所說,這可能很好地依賴於JDK本身之外的工具。 – nullpointer

+1

我意識到這不是一個理想的解決方案,但它適用於某些場景。不幸的是,我認爲jar無法將文件提取到STDOUT。 – neuhaus

相關問題