我遇到运行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
它就像一个魅力!所以我不知道发生了什么。
我检查了一些问题,例如this和this,但我看不到任何对我有用的信息。
感谢您的时间,伙计们
答案 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。