основной метод не найден при использовании One-Jar - PullRequest
0 голосов
/ 26 июня 2018

Я использую 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 Ответ

0 голосов
/ 26 июня 2018

Ваш 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.

...