bash脚本中的Javac不返回这样的文件

bash脚本中的Javac不返回这样的文件,java,bash,Java,Bash,我正在尝试制作一个shell脚本来编译和运行某个.java文件。java程序运行正常,我只对bash脚本有问题 #!/bin/bash CWD=$(pwd) CLSPATH="$CWD/Program.java" COMMAND="javac -classpath $CLSPATH" eval $COMMAND java Program 在这种形式下,错误是 javac: no source files 所以我把命令变量改为 COMMAND="javac\ -classpath\ $CLSP

我正在尝试制作一个shell脚本来编译和运行某个.java文件。java程序运行正常,我只对bash脚本有问题

#!/bin/bash
CWD=$(pwd)
CLSPATH="$CWD/Program.java"
COMMAND="javac -classpath $CLSPATH"
eval $COMMAND
java Program
在这种形式下,错误是

javac: no source files
所以我把命令变量改为

COMMAND="javac\ -classpath\ $CLSPATH"
但这样我就可以

./runJava.sh: line 6: javac -classpath /home/dorin/LocationWhatEver/Program.java: No such file or directory

但是文件和目录仍然存在。有什么想法吗?

您没有传递要编译的实际文件,而是将
.java
文件作为类路径传递。您的实际命令如下所示:

javac -classpath /some/dir/Program.java
javac -classpath /path/to/library.jar /some/dir/Program.java
虽然应该是这样的:

javac -classpath /some/dir/Program.java
javac -classpath /path/to/library.jar /some/dir/Program.java
我认为您在某个地方遗漏了实际的类路径。您的脚本很可能需要与此类似:

#!/bin/bash
CWD=$(pwd)
CLSPATH=/path/to/library.jar
SOURCE="$CWD/Program.java"
COMMAND="javac -classpath $CLSPATH $SOURCE"
eval $COMMAND
java Program
另外,我不确定
eval
方法的目的是什么。为什么不直接调用
javac
?我将进一步修改脚本为:

#!/bin/bash
CWD=$(pwd)
CLSPATH=/path/to/library.jar
SOURCE="$CWD/Program.java"
javac -classpath $CLSPATH $SOURCE
java Program

作品很有魅力,我也学到了一些东西!非常感谢你的时间,朋友@多林鲁苏,我很乐意