2011-08-14 17 views
5

Tengo un archivo Java simple Q.java que depende de un archivo de biblioteca externa X.jar. Tanto Q.java como X.jar están en el mismo directorio. Puedo compilar Q.java desde la línea de comandos haciendo: "javac -cp X.jar Q.java". Esto genera un archivo Q.class. ¿Cómo ejecuto esto ahora? He intentado todas estas cosas:¿Está ejecutando un programa Java desde la línea de comandos que depende de un archivo jar?

1) java Q 2) java -cp X.jar Q

sigo recibiendo una excepción in thread "main" java.lang.NoClassDefFoundError: Q Causado por: java .lang.ClassNotFoundException: Q

Entonces, ¿cómo puedo ejecutar esto desde la línea de comandos ahora que tengo el archivo de clase?

+0

¿Hay una declaración 'package' en Q.java? –

+0

@TedHopp ¿Eso marcaría la diferencia? Tengo un problema similar: http://stackoverflow.com/questions/43156180/classpath-option-works-for-javac-but-not-for-java- windows –

Respuesta

10
java -cp X.jar:. Q 

tiene que especificar en la ruta de clases que desea utilizar la dependencia frasco y el directorio local actual para resolver clases.


Editar sugerido en los comentarios:

En Windows, reemplace : por ;:

java -cp X.jar;. Q 
+4

En Windows, debe usar ";", no ":", entonces ahí estaría "java -cp X.jar ;. Q" –

0

Establecer el directorio actual en la ruta de clases, se debe resolver el problema. La mayoría de las veces, necesitamos el directorio actual en el classpath, por lo tanto, en general, recomiendo establecer "." (sin comillas) en su sistema Variable de entorno CLASSPATH en lugar de establecer para cada ejecución.

Cuestiones relacionadas