从批处理脚本运行java程序的问题

时间:2016-03-09 16:34:55

标签: java batch-file

我遇到运行java程序的批处理脚本的问题,这里是脚本的一些关键行:

exeFinder="java -client -classpath './classes:./lib/javacsv.jar' -Xmx7200m Finder.Main ";
runFinder() {
    cleanFolders;
    $exeFinder $1 $2 $3 > $4;
}
dbName=$1;
k=$2;
n=$3;
outFile="simple_tester-out.log";

runFinder $dbName $k $n $outFile;

我用它的参数运行脚本: ./myScript.sh testing_7x8.csv 7 8
我明白了:

Error: Could not find or load main class Finder.Main

它看起来像是一个java问题,因此我更改$exeFinder $1 $2 $3 > $4;的行echo "$exeFinder $1 $2 $3 > $4";以获取我的执行行:

java -client -classpath './classes:./lib/javacsv.jar' -Xmx7200m Finder.Main  testing_7x8.csv 7 8 > simple_tester-out.log

它就像一个魅力!所以我不知道发生了什么。

我检查了一些问题,例如thisthis,但我看不到任何对我有用的信息。

感谢您的时间,伙计们

2 个答案:

答案 0 :(得分:1)

执行变量中的简单引号有点问题,因此不是:

"java -client -classpath './classes:./lib/javacsv.jar' -Xmx7200m Finder.Main "

必须是:

"java -client -classpath ./classes:./lib/javacsv.jar -Xmx7200m Finder.Main "

这可能与bash及其运作方式有关,我不太了解为何会发生这种情况,但这种变化解决了这个问题。

答案 1 :(得分:0)

尝试sh $exeFinder $1 $2 $3 > $4;

在我的测试中,我无法直接在变量中执行命令,但我可以将其传递给sh。