bash脚本中的Javac不返回此类文件

时间:2013-09-10 11:06:10

标签: java bash

我试图创建一个编译并运行某个.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

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

1 个答案:

答案 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