我有一个Eclipse项目,它使用许多.jar文件作为依赖项,但没有源文件。有一个运行配置设置,它将main方法(入口点)定义为其中一个包含的jars中的方法。它在Eclipse中运行得很好,但是当我尝试使用可执行jar向导时,我得到错误消息“无法从给定的启动配置中找到main方法”。
根据this tutorial的说法,可以使用jar命令行工具手动设置jar的入口点,但是我应该使用什么作为main方法的.class文件的路径,因为我没有直接拥有任何.class文件,只有嵌入式jar?
或者,是否有其他方法可以正确获取入口点集?
发布于 2016-04-07 09:39:16
标准JAR文件格式允许清单和一组类/资源文件。当然,您可以将JAR文件打包到JAR文件中,但是标准Java类加载器不能以这种方式加载类(从嵌入的JAR文件)。因此,您需要展开所有的JAR文件,并根据包重新打包它们。同样,如果您不是在编写自己的类加载器,情况也是如此。
如果您正在使用Maven,幸运的是,Maven提供了一些插件来完成这个重新打包任务。请参阅帮助创建所谓的Uber的Maven JAR plugin或Maven Shade Plugin,该JAR可以选择使用Main-Class
清单属性。或者,在没有Maven的情况下,您始终可以使用简单的shell脚本来扩展和重新压缩这些类。
完成此操作后,您可以使用java -jar myjar.jar
或java -cp myjar.jar my.main.Class
。
https://stackoverflow.com/questions/36465133
复制相似问题