0
我無法使用java.util.jar.JarFile
類讀取jar文件中清單的內容。最終,我試圖解決的問題是確定一個特定的jar文件是否在其清單中有一個Main-Class
條目,但在我到達那裏之前,我將清單清空。無法使用java.util.jar.JarFile讀取jar清單
考慮這個最小的測試案例:
public class ReadJar {
public static void main(String[] args) {
try {
java.util.jar.JarFile jf = new java.util.jar.JarFile("Hello.jar");
System.out.println("Manifest entries: " + jf.getManifest().getEntries());
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
}
我如下測試它:
$ cat Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello");
}
}
$ cat mainifest.txt
Main-Class: Hello
$ javac Hello.java
$ jar cfm Hello.jar mainifest.txt Hello.class
$ java -jar Hello.jar
Hello
$ javac ReadJar.java
$ java ReadJar
Manifest entries: {}
$
看來,我是正確創建的罐子,因爲它可以與java -jar
運行命令。清單的人工檢查對我來說也是正確的:
$ unzip -d temp Hello.jar
Archive: Hello.jar
creating: temp/META-INF/
inflating: temp/META-INF/MANIFEST.MF
inflating: temp/Hello.class
$ cat temp/META-INF/MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.8.0_40-internal (Oracle Corporation)
Main-Class: Hello
$
那麼如何正確讀取清單?是否有我應該使用的不同於java.util.jar.JarFile
的課程?
完美。謝謝。對於那些稍後看到的,將我的'println'行更改爲'jf.getManifest()。getMainAttributes().keySet()'獲得我期望的[Created-By,Manifest-Version,Main-Class] 。 – Will 2015-03-31 05:34:27