2014-09-22 81 views
14

我在JAR歸檔中有.class和.java文件。有沒有什麼辦法從中只提取.java文件? 我試過這個命令,但它不工作:JAR - 提取特定文件

jar xf jar-file.jar *.java 
+0

爲什麼不提取所有文件並刪除不需要的文件? – Strikeskids 2014-09-22 11:24:47

+0

這個JAR從哪裏來?將源代碼和類文件打包到相同的JAR中並不是一個好習慣...... – Puce 2014-09-22 11:27:32

+0

因爲它更醜陋,速度更慢。那裏有大約10000個文件。 – user3521479 2014-09-22 11:30:57

回答

17

可以使用unzip命令它接受在它的參數通配符(其不是jar命令的情況下)。這樣的事情應該做的伎倆(免責聲明:未測試)

unzip youFile.jar "*.java" 
+0

太棒了!它的工作原理,謝謝:) – user3521479 2014-09-22 11:47:14

15

source:

從一個jar文件中提取的某些文件,提供它們的文件名:

C:\Java> jar xf myFile.jar foo bar

使用通配符是一個shell的東西,你不應該指望它工作時從JAR文件中解壓出(正如你所認識到的那樣)。

可以做什麼,是供應要提取的文件列表,通過@修改:

jar xf my.jar @myfiles.lst 

其中myfiles.lst是:

com/my/MyClass.java 
com/my/MySecondClass.java 

該文件可能可以通過創造性地使用jar tvf,awk和您想要的提取模式自動創建。我會把它作爲一個練習和/或另一個SO問題:-)

或者你可以使用unzip - 一個JAR文件基本上是一個zip文件。

乾杯,

+0

好吧,我知道它,這是在文檔中,但沒有jar支持任何正則表達式?我沒有找到它:/ – user3521479 2014-09-22 11:40:02

-1

不應該有任何* .java文件在一個罐子裏,只有類文件。您可以先運行以下內容來檢查罐子的內容:

jar tvf jar-file.jar