使用 One-Jar 找不到主方法



我正在使用One-Jar将我的应用程序及其依赖项合并到一个jar文件中。我逐步使用了命令行方法。但是,当使用 java -jar one-jar 运行 jar 文件时.jar我收到以下内容

error:
Exception in thread "main" java.lang.ClassNotFoundException: com.webtest.hc.Main
at com.simontuffs.onejar.JarClassLoader.findClass(JarClassLoader.java:713)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at com.simontuffs.onejar.JarClassLoader.loadClass(JarClassLoader.java:630)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.simontuffs.onejar.Boot.run(Boot.java:336)
at com.simontuffs.onejar.Boot.main(Boot.java:168)

这是我的启动清单.mf:

Manifest-Version: 1.0
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: com.webtest.hc.Main

我遵循了与One-Jar网站完全相同的说明

您的 JAR 打包不正确。消息错误说 Java 找不到 One-Jar 加载程序,这是com.simontuffs.onejar.Boot因此即使您尝试按照 One-Jar 站点上的说明进行操作,您最终也会以某种方式获得格式错误的存档。

如何知道 JAR 格式不正确?

好吧,从JVM消息中,如果您尝试使用ZIP查看器打开JAR,我们可以猜测您会错过以下文件:

META-INF/MANIFEST.MF
com/simontuffs/onejar/Boot.class
com/simontuffs/onejar/Handler$1.class
com/simontuffs/onejar/Handler.class
com/simontuffs/onejar/JarClassLoader$ByteCode.class
com/simontuffs/onejar/JarClassLoader.class
boot-manifest.mf

如何修复打包过程?

这取决于,我们没有来源,所以无法判断。作为个人建议,我使用Gradle作为构建工具,它与IDE(Eclipse和Intellij(和Capsule(One-Jar的替代品(很好地集成在一起。

最新更新