Основной метод не найден при использовании One-Jar
Я использую One-Jar, чтобы объединить мое приложение и его зависимости в один файл JAR. Я использовал подход командной строки шаг за шагом. Однако при запуске файла jar с помощью java -jar one-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
1 ответ
Ваш JAR упакован неправильно. Сообщение об ошибке говорит, что Java не может найти загрузчик One-Jar, который com.simontuffs.onejar.Boot
так что вы каким-то образом получили поврежденный архив, даже если попытались выполнить инструкции на сайте One-Jar.
Как я узнаю, что JAR поврежден?
Ну, из сообщения JVM мы можем догадаться, что вы пропустите следующие файлы, если попытаетесь открыть JAR с помощью программы просмотра ZIP:
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.