2011-06-20 18 views
19

lo tanto, yo puedo hacer esto muy bien:¿Cómo ejecutar una clase java con un jar en classpath?

java mypackage.MyClass 

si existe ./mypackage/MyClass.class. También puedo felizmente hacer esto:

java -cp myjar.jar mypackage.MyClass 

si existe el archivo de clase en la parte apropiada de la jarra. Cosas fáciles Pero no puedo por la vida de mí llegar a hacer algo como esto:

java -cp utilities.jar mypackage.MyClass 

donde existe ./mypackage/MyClass.class, y donde existe ./utilities.jar (que no contiene MiClase, por supuesto).

¿Estoy a punto de sentirme estúpido?

Respuesta

39

Posiblemente :)

# On Unix 
java -cp utilities.jar:. mypackage.MyClass 

# On Windows 
java -cp utilities.jar;. mypackage.MyClass 

Básicamente eso es sólo incluyendo . (el directorio actual) en la ruta de clase, así como el archivo jar.

+0

Oh. Gah. * vergüenza * – naiad

+0

¿'-cp' es una forma abreviada de' -classpath'? – overexchange

+0

@overexchange: Sí. (Correr 'java -?' Se lo habría dicho). –

5

Pruebe esto si estás en Windows:

java -cp .;utilities.jar mypackage.MyClass 

o esto si estás en Linux:

java -cp .:utilities.jar mypackage.MyClass 

El directorio actual no está en el CLASSPATH de forma predeterminada cuando se especifica una valor para -cp.

+0

No, el directorio actual * es * el classpath por defecto; solo cuando especifica un classpath * diferente * obtiene problemas. –

+0

@Vuntic: Eso sería ciertamente exacto. Tal vez a @duffymo le gustaría editar esa frase :) –

-1

Debe incluir mypackage.MyClass en CLASSPATH o el parámetro -cp. Por ejemplo:

java -cp utilities.jar;myjar.jar mypackage.MyClass 

El separador de ruta es; en Windows y: en Unix/Linux

+0

que puedo hacer bien; MyClass está en un archivo de clase independiente, no myjar.jar – naiad

Cuestiones relacionadas