Основной метод не найден при использовании 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.

Другие вопросы по тегам