/ / Erreur lors de la construction du fichier JAR avec Eclipse [duplicate] - java, eclipse, maven, jar, noclassdeffounderror

Erreur lors de la construction du fichier jar avec Eclipse [duplicate] - java, eclipse, maven, jar, noclassdeffounderror

J'ai donc créé un projet sur eclipse, et je veux créer un fichier JAR avec. Le dossier de projet contient les dossiers suivants:

  • src (contient deux paquets)
  • Bibliothèques système JRE
  • Bibliothèques référencées ("jasypt-1.9.2.jar" et "json_simple-1.1.jar")
  • libs (à nouveau: "jasypt-1.9.2.jar" et "json_simple-1.1.jar")
  • ressources (contenant des images et des fichiers)

Si je vais à: rclick sur le nom du projet -> Propriétés -> Java Build Path -> Bibliothèques

Je vois les deux bibliothèques correctement ajoutées au chemin de construction.

Puis je vais cliquer sur le nom du projet -> export-> fichier JAR et ici je exporte tout (juste pour être sûr ..!). Ensuite, je mets la MainClass comme point d’entrée, puis le fichier JAR est créé sans aucun problème.

Lorsque j'extrais le fichier JAR (registry.jar), je constate qu'il contient tout ce dont il a besoin: [package1, package2, META-INF, libs, resources, .classpath, .project]

En outre, le .classpath est correct (du moins, il me semble pas 100% sûr!):

   <?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>

MAIS ALORS lorsque je vais exécuter le fichier registry.jar à partir de la ligne de commande (Windows et Ubuntu), comme ceci:

java -jar registry.jar

Je reçois:

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

Le programme compile et fonctionne parfaitement dans eclipse. Je ne peux juste pas comprendre ce que c'est que le problème ...

Réponses:

0 pour la réponse № 1

le .classpath fichier n'a aucune signification pour Java. Il est uniquement utilisé par Eclipse. Java ne reconnaît pas que les bibliothèques nécessaires sont sous la lib entrée dans le fichier Jar.

Vous "d devez inclure le chemin des bibliothèques à travers la commande:

java -jar registry.jar -cp lib

où dans ce cas lib est un dossier résidant à côté du Jar exporté.

Si vous utilisez Maven, vous pouvez utiliser le plug-in de l'assembly pour générer un fichier exécutable. Comment créer un fichier JAR exécutable avec des dépendances utilisant Maven?.