2010-08-05 58 views
26

我正在寫一個makefile,將.java文件編譯到不同的目錄中,然後我想運行它,而不更改目錄。我想做的事的東西線:如何在另一個目錄中編譯和運行Java類?

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

其中的Java文件是/home/myjavafile.java,並且生成文件不是從/home運行。

我該怎麼做?

+1

爲什麼不創建Ant腳本並將完整路徑傳遞給ant build.xml來編譯你的java文件? – 2010-08-05 14:16:55

回答

32

我可能會被誤解的問題,但你可以

javac /home/MyJavaFile.java 

編譯這將創建MyJavaFile.class/home

然後,您可以包括在classpath /home運行它。例如

java -cp /home MyJavaFile 

如果要產生在不同的目錄中的類文件,那麼你可以使用-d選項javac

+1

我試過'java -cp「。:lib/dropbox-core-sdk-1.7.5.jar:lib/jackson-core-2.2.3.jar:lib/javax.mail.jar」/ bin Client1',但鏈接器吐出:'錯誤:無法找到或加載主類.bin'。 – Andrei 2013-11-21 07:10:44

32

使用與javac-d命令行參數來告訴它你想編譯的類文件存儲在哪個目錄。然後,運行該程序,只需包含此目錄中的類路徑:

javac -d some/directory myjavafile.java 
java -cp some/directory myjavafile 
相關問題