【问题标题】:main method not found using One-Jar使用 One-Jar 找不到主要方法
【发布时间】:2018-06-26 16:20:26
【问题描述】:

我正在使用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 网站中完全相同的说明

【问题讨论】:

  • 您的文件在 root/main 和 root/lib 中吗? (根是项目文件夹)
  • @thomas 是的。我的依赖项位于 root/lib 中,而我的 application.jar 位于 main 中,其中包含以下软件包:com/webtest/hc

标签: java onejar


【解决方案1】:

您的 JAR 打包不正确。消息错误表明 Java 找不到 One-Jar 加载程序,即com.simontuffs.onejar.Boot,因此即使您尝试按照 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 的替代品)很好地集成在一起。

【讨论】:

  • 感谢您的帮助。但是我解压缩了 JAR,我有你提到的所有类文件
  • 不可能。将您的 JAR 上传到某个地方(Google Drive、Dropbox 等)并分享链接,这样我就可以告诉您它出了什么问题
  • 上传 JAR。调试截图是一门艺术,我仍然没有权限管理
  • 感谢 Raffaele 看我的截图。这是为了我的工作,我不确定我是否被允许。
猜你喜欢
  • 2012-01-03
  • 2015-10-16
  • 2015-01-05
  • 2018-05-12
  • 2013-10-26
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多