2010-08-05 8 views
26

Estoy escribiendo un archivo MAKE que compila un archivo .java en un directorio diferente, y luego quiero ejecutarlo, sin cambiar directorios. Quiero hacer algo en la línea de:¿Cómo puedo compilar y ejecutar una clase Java en un directorio diferente?

$(SQM_JAVA_TOOL_DONE) : $(SQM_JAVA_TOOL) 
     $(shell cd /home_dir) 
     javac myjavafile.java 
     java myjavafile 

donde el archivo Java es /home/myjavafile.java, y el makefile no se está ejecutando desde /home.

¿Cómo puedo hacer esto?

+1

¿Por qué no creas un script Ant y pasas la ruta completa al build.xml de ant para compilar tus archivos java? –

Respuesta

32

que podrían no entender la pregunta, pero se puede compilar con

javac /home/MyJavaFile.java 

Esto creará MyJavaFile.class en /home

continuación, puede ejecutar mediante la inclusión de /home en la ruta de clase. p.ej.

java -cp /home MyJavaFile 

Si desea generar el archivo de clase en un directorio diferente, entonces se puede utilizar la opción -d-javac.

+1

Probé 'java -cp".: Lib/dropbox-core-sdk-1.7.5.jar: lib/jackson-core-2.2.3.jar: lib/javax.mail.jar "/ bin Client1', pero el enlazador escupió: 'Error: no se pudo encontrar o cargar la clase principal .bin'. – Andrei

32

Usar el parámetro de línea de comandos con -djavac para decirle qué directorio desea almacenar los archivos de clase compilados en Entonces, para ejecutar el programa, basta con incluir este directorio en la ruta de clase:.

javac -d some/directory myjavafile.java 
java -cp some/directory myjavafile 
Cuestiones relacionadas