1

我正在使用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)

这是我的 boot-manifest.mf :

Manifest-Version: 1.0

Main-Class: com.simontuffs.onejar.Boot

One-Jar-Main-Class: com.webtest.hc.Main

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

4

1 回答 1

0

您的 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很好地集成在一起,Capsule是 One-Jar 的替代品。

于 2018-06-26T16:33:29.280 回答