4
我想通過jar
命令創建多版本jar(對於Java 8和Java 9)。 有幾個Netbeans IDE項目:com.jdojo.mrjar.jdk8,com.jdojo.mrjar.jdk9。 項目源代碼是here。 使用命令行我轉到父文件夾並運行命令。 當我嘗試這樣做:如何創建多版本jar並過濾輸入內容?
jar --create --file mrjars/com.jdojo.mrjar.jar
-C com.jdojo.mrjar.jdk8/build/classes .
--release 9 -C com.jdojo.mrjar.jdk9/build/classes .
我得到一個消息:
Warning: entry META-INF/versions/9/.netbeans_automatic_build contains a class that
is identical to an entry already in the jar
Warning: entry META-INF/versions/9/.netbeans_update_resources contains a class that
is identical to an entry already in the jar
java.nio.file.NoSuchFileException: java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:384)
at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:288)
at java.base/java.nio.file.Files.move(Files.java:1413)
at jdk.jartool/sun.tools.jar.Main.validateAndClose(Main.java:460)
at jdk.jartool/sun.tools.jar.Main.run(Main.java:343)
at jdk.jartool/sun.tools.jar.Main.main(Main.java:1670)
我認爲這是由於開發環境服務文件的存在。是否有可能對它們進行過濾(僅選擇特定文件類型的文件以便通過jar包裝它們)?
在Java Platform, Standard Edition Tools Reference中描述的罐操作。
您是否嘗試過明確列出'class'文件而不是使用'-C'?這樣你可以看到排除'.netbeans ...'文件夾是否有幫助。另外,有趣的是,這些只是警告,所以可能與例外無關。那裏沒有原因嗎? – Nicolai
是的,@Nicolai。 「類」文件列表解決了過濾問題。我認爲'$(find -name * .class)'命令對此很有用。但是這樣做還有其他問題。沒有辦法指定源代碼文件列表的根文件夾在哪裏。 –
因此,發生錯誤的文件打包('com.jdojo.mrjar.jdk9.build.classes.com.jdojo.mrjar')。 –