2010-02-09 45 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选项查看所有加载的类的名称。