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