/ / Помилка створення jar-файлу з Eclipse [дублікат] - java, eclipse, maven, jar, noclassdeffounderror

Помилка створення jar-файлу з Eclipse [дублікат] - java, eclipse, maven, jar, noclassdeffounderror

Таким чином, я створив проект на Eclipse, і я хочу створити JAR-файл з ним. Папка проекту містить такі папки:

  • src (містить два пакети)
  • Бібліотеки системи JRE
  • Бібліотеки з посиланнями ("jasypt-1.9.2.jar" і "json_simple-1.1.jar")
  • libs (знову: "jasypt-1.9.2.jar" і "json_simple-1.1.jar")
  • ресурси (що містять зображення та файли)

Якщо я йду: натисніть на назву проекту -> Властивості -> шлях Java Build -> бібліотеки

Я бачу, що обидва бібліотеки коректно додавалися до шляху побудови.

Потім я йду, щоб перейти на назву проекту -> експорт-> файл JAR і тут я експортую все (просто щоб бути впевненим ..!). Потім я поставив MainClass як точку входу, а потім файл JAR створюється без проблем.

Коли я витягую файл JAR (registry.jar), я бачу, що він містить все, що потрібно: [пакет1, пакет2, META-INF, libs, ресурси, .classpath, .project]

Крім того, .classpath правильний (принаймні, мені здається .. не 100% впевнений!):

   <?xml version="1.0" encoding="utf-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry exported="true" kind="lib" path="libs/jasypt-1.9.2.jar"/>
<classpathentry exported="true" kind="lib" path="libs/json_simple-1.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

АЛЕ потім, коли я йду виконувати файл registry.jar з командного рядка (як Windows, так і Ubuntu), як це:

java -jar registry.jar

я отримав:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
at ...
at ...
Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
at java.net.URLClassLoader$1.run<Unknown Source>
at ...
at ...
... lots more

Програма компілює і ідеально працює всередині затемнення. Я просто не можу зрозуміти, що це проблема ...

Відповіді:

0 для відповіді № 1

The .classpath файл не має сенсу для Java. Використовується лише за допомогою Eclipse. Java не визнає, що потрібні бібліотеки знаходяться під lib запис у файл Jar.

Вам потрібно буде включити шлях до бібліотек за допомогою команди:

java -jar registry.jar -cp lib

де в цьому випадку lib це папка, розташована поряд із експортованим Jar.

Якщо ви використовуєте Maven, ви можете зібрати плагін для створення виконуваного файлу. Див Як я можу створити виконуваний JAR з залежностями, використовуючи Maven?.