Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不同的目录中编译和运行Java类?_Java_Javac - Fatal编程技术网

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

如何在不同的目录中编译和运行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运行的 我该怎么做呢?我可

我正在编写一个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

然后可以通过在类路径上包含
/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