0

我试图制作一个编译和运行某个 .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

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

4

1 回答 1

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
于 2013-09-10T11:09:19.107 回答