我试图创建一个编译并运行某个.java文件的shell脚本。 java程序有效,我只能使用bash脚本。
#!/bin/bash
CWD=$(pwd)
CLSPATH="$CWD/Program.java"
COMMAND="javac -classpath $CLSPATH"
eval $COMMAND
java Program
以这种形式出现错误
javac: no source files
所以我将COMMAND变量更改为
COMMAND="javac\ -classpath\ $CLSPATH"
但这样我得到了
./runJava.sh: line 6: javac -classpath /home/dorin/LocationWhatEver/Program.java: No such file or directory
但文件和目录存在。有什么想法吗?
答案 0 :(得分:2)
您没有将实际文件传递给编译 - 而是将.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