在嵌入式jar中创建带入口点的可执行jar

时间:2016-04-07 01:28:40

标签: java eclipse jar

我有一个Eclipse项目,它使用许多.jar文件作为依赖项,但没有源文件。有一个运行配置设置,将主方法(入口点)定义为其中一个包含的jar中的方法。它在Eclipse中运行良好,但是当我尝试使用可执行jar向导时,我收到错误"无法从给定的启动配置中找到main方法。"

根据this tutorial,可以使用jar命令行工具手动设置jar的入口点,但是我应该使用什么作为main方法的.class文件的路径,因为我没有&# 39; t直接有任何.class文件,只是嵌入式jar?

或者,有没有其他方法可以正确设置入口点?

1 个答案:

答案 0 :(得分:2)

标准JAR文件格式允许清单和一组类/资源文件。当然,您可以将JAR文件打包在JAR文件中,但标准Java类加载器无法以这种方式加载类(来自嵌入式JAR文件)。因此,您需要扩展所有JAR文件并根据包重新打包它们。同样,如果您没有编写自己的类加载器,情况也是如此。

如果您正在使用Maven,幸运的是,Maven提供了一些插件来执行此重新打包任务。请参阅Maven JAR pluginMaven Shade Plugin,它们有助于创建所谓的Uber JAR,可以选择使用Main-Class清单属性。或者,在没有Maven的情况下,您可以使用简单的shell脚本来扩展和重新调整类。

完成此操作后,您可以使用java -jar myjar.jarjava -cp myjar.jar my.main.Class