/ / Error al compilar el archivo jar con Eclipse [duplicado] - java, eclipse, maven, jar, noclassdeffounderror

Error al crear el archivo jar con Eclipse [duplicado] - java, eclipse, maven, jar, noclassdeffounderror

Así que creé un proyecto sobre eclipse, y quiero crear un archivo JAR con él. La carpeta del proyecto contiene las siguientes carpetas:

  • src (contiene dos paquetes)
  • Bibliotecas del sistema JRE
  • Bibliotecas referenciadas ("jasypt-1.9.2.jar" y "json_simple-1.1.jar")
  • libs (de nuevo: "jasypt-1.9.2.jar" y "json_simple-1.1.jar")
  • recursos (que contienen imágenes y archivos)

Si voy a: haga clic en el nombre del proyecto -> Propiedades -> Ruta de compilación de Java -> Bibliotecas

Veo que ambas bibliotecas se agregaron correctamente a la ruta de compilación.

Luego voy a hacer clic en el nombre del proyecto -> exportar-> archivo JAR y aquí exporto todo (¡solo para estar seguro ...!). Luego pongo MainClass como punto de entrada y luego el archivo JAR se crea sin ningún problema.

Cuando extraigo el archivo JAR (registry.jar), veo que contiene todo lo que necesita: [paquete1, paquete2, META-INF, libs, recursos, .classpath, .project]

Además, el .classpath es correcto (al menos, me parece ... ¡no 100% seguro!):

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

PERO LUEGO cuando voy a ejecutar el archivo registry.jar desde la línea de comandos (tanto Windows como Ubuntu), así:

java -jar registry.jar

yo obtengo:

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

El programa compila y funciona perfectamente dentro de eclipse. Simplemente no puedo entender cuál es el problema ...

Respuestas

0 para la respuesta № 1

los .classpath el archivo no tiene ningún significado para Java. Solo lo usa Eclipse. Java no reconoce que las bibliotecas necesarias se encuentran bajo el lib entrada en el archivo Jar.

Debería incluir la ruta de las bibliotecas a través del comando:

java -jar registry.jar -cp lib

donde en este caso lib es una carpeta que reside junto al Jar exportado.

Si está usando Maven, puede usar el plugin de ensamblaje para generar un archivo ejecutable. ¿Cómo puedo crear un JAR ejecutable con dependencias usando Maven?.