java Manifest包含jar库中的Main-class

时间:2016-09-06 13:22:27

标签: java manifest

使用jar命令创建可执行文件java -jar myApp.jar时遇到问题。

是否可以创建一个可执行文件jar,其中主类位于myApp.jar文件中lib文件夹中的一个库中?

1 个答案:

答案 0 :(得分:1)

  

是否可以制作一个可执行jar,其中main类位于myApp.jar文件中lib文件夹中的一个库中?

没有

主类需要由标准JarClassLoader加载。该类加载器通过jar的清单文件中的Class-Path条目提供外部 jar在类路径中注册,但正如the Java Tutorial所示:

  

注意: Class-Path标头指向本地网络上的类或JAR文件,而不是JAR文件中的JAR文件或可通过Internet协议访问的类。 要将JAR文件中的JAR文件中的类加载到类路径中,必须编写自定义代码来加载这些类。 例如,如果MyJar.jar包含另一个类名为MyUtils.jar的JAR文件,您无法使用Class-Path清单中的MyJar.jar标头将MyUtils.jar中的类加载到类路径中。

(强调补充。)因为您需要自定义代码从jar中包含的jar加载类,并且您需要加载主类以调用任何此类代码,所以主类本身无法从内部jar加载

但是,可以想象,您可以创建一个可以直接加载的小包装类,其唯一目的是设置所需的自定义类加载器并引导真正的主类。