2010-08-05 129 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 
相关问题