2010-08-05 12 views
26

Sto scrivendo un makefile che compila un file .java in una directory diversa, e quindi voglio eseguirlo, senza cambiare directory. Voglio fare qualcosa sulla falsariga di:Come posso compilare ed eseguire una classe Java in una directory diversa?

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

in cui il file Java è /home/myjavafile.java, e il makefile non è in esecuzione da /home.

Come posso fare questo?

+1

Perché non si crea uno script Ant e si passa il percorso completo a form.xml per compilare i file java? –

risposta

32

potrei essere fraintendimento della domanda, ma si può compilare con

javac /home/MyJavaFile.java 

Questo creerà MyJavaFile.class in /home

È possibile quindi eseguirlo includendo /home nel classpath. per esempio.

java -cp /home MyJavaFile 

Se si desidera generare il file di classe in una directory diversa quindi è possibile utilizzare l'opzione -d-javac.

+1

Ho provato 'java -cp.: Lib/dropbox-core-sdk-1.7.5.jar: lib/jackson-core-2.2.3.jar: lib/javax.mail.jar"/bin Client1', ma il linker sputa: 'Errore: impossibile trovare o caricare la classe principale .bin'. – Andrei

32

Utilizzare il parametro della riga di comando con -djavac per raccontarla quale directory si desidera memorizzare i file di classe compilati in poi, per eseguire il programma, è sufficiente includere questa directory nel classpath:.

javac -d some/directory myjavafile.java 
java -cp some/directory myjavafile 
Problemi correlati