В исполняемых файлах jar нет ничего особенного. Единственное отличие состоит в том, что исполняемый файл JAR определяет основной класс (с методом main()
), который будет запускаться при запуске java -jar ...
.
Файл jar на самом деле представляет собой простой zip-файл, содержащий классы, ресурсы и некоторую дополнительную метаинформацию.
Когда вы запускаете свой jar-файл и получаете ClassNotFoundException, это проблема с вашим путем к классу. Так что вы как-то упускаете классы, от которых вы зависите, находящиеся во внешней библиотеке.
Существует два способа решения вашей проблемы:
- Добавьте библиотечный jar в путь к классу, когда вы запустите свой исполняемый jar
- Упакуйте свой исполняемый файл jar, чтобы он содержал все классы из внешней библиотеки
Я не знаю, что делают функции экспорта Eclipse. Но я бы рекомендовал сначала взглянуть на экспортированный jar-файл, используя вашу любимую zip-утилиту.
Я бы также порекомендовал использовать такой инструмент сборки, как maven, для создания вашей фляги. Вот пример того, как это можно сделать с помощью подключаемого модуля maven: https://www.mkyong.com/maven/create-a-fat-jar-file-maven-assembly-plugin/