我正在使用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
我遵循与一罐网站完全相同的指示
答案 0 :(得分:0)
您的JAR包装不正确。消息错误表明Java找不到com.simontuffs.onejar.Boot
的One-Jar加载程序,因此即使您尝试按照One-Jar网站上的说明进行操作,您最终还是以格式错误的存档而告终。
我怎么知道JAR格式不正确?
好吧,如果您尝试使用ZIP浏览器打开JAR,从JVM消息中我们可以猜测出您错过了以下文件:
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的替代品)很好地集成在一起。