如何在不同的目录中编译和运行Java类?

我正在编写一个makefile,在另一个目录中编译.java文件,然后我想运行它,而不更改目录。 我想做一些事情:

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

其中Java文件是/home/myjavafile.java ,并且makefile没有从/home运行。

我怎样才能做到这一点?

我可能误解了这个问题,但你可以编译

 javac /home/MyJavaFile.java 

这将在/home创建MyJavaFile.class

然后,您可以通过在类路径中包含/home来运行它。 例如

 java -cp /home MyJavaFile 

如果要在不同的目录中生成类文件,则可以使用-d选项进行javac

-d命令行参数与javac一起使用,告诉它您要将编译的类文件存储在哪个目录中。然后,要运行该程序,只需在classpath中包含此目录:

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