我有一个 java 代码,它获取一个数据文件,将数据复制到 perl 脚本,并从 shell 脚本调用 perl 脚本。以下是相关代码:
public String returnStringForPerlScript(ArrayList<String> arrayContainingPerlScriptArguments, String singularFilePath) throws IOException{
String argFileName = null;//5
String argParsedFileName = null;//
argParsedFileName = arrayContainingPerlScriptArguments.get(4);
argFileName = arrayContainingPerlScriptArguments.get(5);
System.out.print("ARG1: "+argFileName);
System.out.print(" ARG2: "+argParsedFileName);
String runCmdString = singularFilePath+"perlscript.pl";
String runCmd = singularFilePath+"runPerlScript.sh";
return runCmd;
}
上面的代码是一个单独的类中的方法。下面的代码是 Process 实际初始化和运行的地方。
p = dfp.returnStringForPerlScript(perlParam, singularDirectoryPath);
System.out.println("Running from: "+p);
process = Runtime.getRuntime().exec(p);
令人困惑的是,这段代码之前运行得很好,而我改变的只是输出目录。我写了一个完全不同的文件路径,而不是“singularDirectoryPath”。我很困惑,因为我不知道代码有什么问题,考虑到它之前运行过。当我从终端调用“runPerlScript.sh”时,它起作用了。
我还应该补充一点,我确实尝试使用 String[] 而不是字符串,如下所示:
String[] cmdArray = {"/bin/tcsh","-c","/filepath/runPerlScript.sh"};
Process p = Runtime.getRuntime().exec(cmdArray);
仍然没有生成任何输出文件。