2010-02-09 47 views
4

清單文件比方說,我有:
core.jar添加
client.jar中(包含主法)(使用core.jar添加)
super_mega_client.jar(使用core.jar添加,客戶端。 JAR)獲得從執行JAR

運行我的節目,我用「Java的罐子super_mega_client.jar」
我怎麼能得到「super_mega_client.jar」清單文件一無所知關於它的名字和內容?
Actualy我需要建立在core.jar添加一個UTIL將與罐子工作,以執行「Java的罐子***罐子」


OK,這裏是正確的問題:
我有main.jar文件與主法(讓在my.app.Main類說吧)
我也有fisrt.jar(有一些類和資源)和second.jar(有一些其他類和資源)。兩者都沒有主類,都在CLASSPATH中有「main.jar」,它們都具有Main-Class屬性,定義爲「my.app.Main」。
我可以通過執行「Java的罐子first.jar」或運行我的應用「Java的罐子second.jar
在我my.app.Main.main(String[] args)方法(包含在main.jar文件)我想知道執行的jar名稱(我想要得到「first.jar」或「second.jar」)
我該怎麼做?

+0

請參見[this](http://stackoverflow.com/questions/2198525/can-values-defined-in-manifest-mf-be-accessed-programmatically)問題。 – er4z0r 2010-02-09 09:43:58

+0

我不知道jar名稱,也沒有任何類名。我只知道那個jar被用在「java -jar * .jar」命令中。 – 2010-02-09 10:17:59

+0

+1。使用引用的答案,您可以搜索每個潛在JAR的清單,例如'find/path/to/jars -name'* jar'| xargs清單' – trashgod 2010-02-09 19:30:44

回答

0

在聲明它的主類的任何廣口瓶,位置和名稱是由標準固定META-INF/MANIFEST.MF

您可以使用自帶的Java SDK(任何ZIP工具jar命令檢索清單文件,你可以從命令運行也可以)通過運行:

jar -xvf anyjar.jar META-INF/MANIFEST.MF 

這將創建META-INF目錄並將清單文件放入其中。如果你想減少冗長的輸出,你可以省略-v。

0

您可以使用java命令的-verbose選項查看所有加載的類的名稱。