2011-05-12 21 views
5

Estoy tratando de ejecutar un programa java desde un archivo jar. Java no puede encontrar una clase de soporte marc4j. Qué estoy haciendo mal. Aquí están los detallesClase Java no encontrada

Dentro de mi corriente directa es MarcTry.jar que tiene mi clase principal. También hay marc4j.jar que tiene la clase que falta:

org/marc4j/MarcReader 

Por ejemplo:

java -jar MarcTry.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/marc4j/MarcReader Caused by: java.lang.ClassNotFoundException: org.marc4j.MarcReader at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: marctry.Main. Program will exit.

He intentado

java-jar MarcTry.jar -classpath marc4j.jar

con y sin el marc4j.jar una ruta totalmente calificada.

Cualquier idea es bienvenida.

Respuesta

3

El classpath se ignora cuando está utilizando el interruptor "-jar". Especifique ambos archivos jar con "-classpath" y ejecute la clase principal con el nombre completo.

E.g. java -cp MarcTry.jar; marc4j.jar com.domain.MainClass

.. o añadir marc4j.jar a la entrada de la ruta de clase en el archivo de manifiesto de MarcTry.jar

Usted puede leer acerca de la adición a los tarros la ruta de clase del archivo de manifiesto aquí: Adding Classes to the JAR File's Classpath

+0

creo que solucionó mi problema Gracias! Ahora falta una clase diferente, pero sé cómo solucionar eso a continuación. (El punto y coma en su respuesta es un error tipográfico. Un dos puntos funcionó). – Thwaites

+0

dos puntos vs punto y coma es específico de la plataforma –

+0

¡Genial! Puede, si lo desea, marcar esta respuesta como correcta. Eso marcará a los demás que la pregunta ha sido respondida. – Kaj

1
java -cp <complete path for your supporting jar>;<your jar which you want to run> 

(para la seguridad puso las dos frascos en la misma carpeta)

Cuestiones relacionadas