使用jar
命令创建可执行文件java -jar myApp.jar
时遇到问题。
是否可以创建一个可执行文件jar
,其中主类位于myApp.jar
文件中lib文件夹中的一个库中?
答案 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加载
但是,可以想象,您可以创建一个可以直接加载的小包装类,其唯一目的是设置所需的自定义类加载器并引导真正的主类。