如何在不同的目录中编译和运行Java类?
我正在编写一个makefile,它在不同的目录中编译一个如何在不同的目录中编译和运行Java类?,java,javac,Java,Javac,我正在编写一个makefile,它在不同的目录中编译一个.java文件,然后我想在不更改目录的情况下运行它。我想做以下几点: $(SQM_JAVA_TOOL_DONE) : $(SQM_JAVA_TOOL) $(shell cd /home_dir) javac myjavafile.java java myjavafile 其中Java文件是/home/myjavafile.Java,而makefile不是从/home运行的 我该怎么做呢?我可
.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
然后可以通过在类路径上包含/home
来运行它。e、 g
java -cp /home MyJavaFile
如果要在不同的目录中生成类文件,则可以使用
-d
选项javac
使用-d
命令行参数和javac
告诉它要将编译的类文件存储在哪个目录中。然后,要运行程序,只需在类路径中包含此目录:
javac -d some/directory myjavafile.java
java -cp some/directory myjavafile
要添加到现有答案中,您可能需要
--源路径
标志:
这甚至可以从文件系统中的其他目录中工作,例如:
$ javac --source-path /some/absolute/path/src -d /some/absolute/path/bin /some/absolute/path/
$ java -cp /some/absolute/path/bin mypackage.Main
为什么不创建一个Ant脚本并将完整路径传递到Ant build.xml来编译java文件呢?我尝试了
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,只需删除“/bin”在客户端之前,将所有jar或文件夹与.class一起放在“-cp”的双引号之间,仅放在主类名称之后。
$ javac --source-path src -d bin src/mypackage/*.java
$ java -cp bin mypackage.Main
$ javac --source-path /some/absolute/path/src -d /some/absolute/path/bin /some/absolute/path/
$ java -cp /some/absolute/path/bin mypackage.Main