Простое Json ClassNotFoundException при выполнении JAR, созданного gradle - PullRequest
0 голосов
/ 07 октября 2019

Недавно я разработал простую игру JavaFX, в которой использовался Simple Json. Зависимость была определена в зависимостях Gradle, и игра работает нормально с командой Gradle run . Но когда я создаю файл jar с помощью - Gradle Jar и запускаю , появляется следующая ошибка :

Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException

enter image description here

Вот изображение моего файла build.gradle:

enter image description here

Как мне это исправить?

1 Ответ

1 голос
/ 07 октября 2019

Это поведение пакета по умолчанию. Фаза пакета инструментов, таких как Gradle и Maven, только копирует исходные коды приложений (классы и ресурсы Java из каталога src) и НЕ включает файлы из зависимостей.

Поэтому файл jar, созданный по умолчанию, не имеет классов или ресурсов зависимостей.

Существует множество решений для запуска java-программы из файла jar с зависимостями:

  1. Поместите jar приложения, а также jar зависимостей в каталог (lib) и добавьте его в путь к классам при запуске основного класса.
java -cp lib/*.jar  com.game.MainClass
Создать толстую (убер) банку. Плагины Gradle, такие как Shadow , могут генерировать один jar со всеми зависимостями, упакованными в него. Просто укажите основной класс в манифесте.
java -jar myAppFat.jar
Используйте плагины, такие как Launch4J для генерации исполняемых файлов Windows. Это замечательно, если вы хотите отправлять пользователям простые приложения «нажми и запускай».
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...