/ / Грешка при изграждането на jar файл с Eclipse [дубликат] - java, eclipse, maven, jar, noclassdeffounderror

Грешка при изграждането на jar файл с Eclipse [дубликат] - java, eclipse, maven, jar, noclassdeffounderror

Така че създадох проект за затъмнение и искам да създам JAR файл с него. Папката на проекта съдържа следните папки:

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

Ако отида на: rclick на името на проекта -> Properties -> Java Build Path -> Библиотеки

Виждам, че двете библиотеки са добавени правилно към пътя за създаване.

След това отивам да rclick на името на проекта -> износ-> 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

Най- .classpath файл няма значение за Java. Той се използва само от Eclipse. Java не разпознава, че необходимите библиотеки са под lib в Жар файла.

Трябва да включите пътя на библиотеките чрез командата:

java -jar registry.jar -cp lib

където в този случай lib е папка, намираща се до изнесения контейнер.

Ако използвате Maven, можете да създадете плъгин, за да генерирате изпълним файл Как мога да създам изпълним JAR с зависимости чрез Maven?.