我正在尝试从Java代码运行Perl脚本文件,但它对我不起作用。我修改了Perl脚本并将参数放入其中,而不是通过Java代码传递参数。从命令行运行脚本时,脚本运行良好,但在Java代码中不起作用,始终显示“错误” !!我写了另一个Perl脚本(test.pl),它可以工作,但是所需的脚本不起作用?我正在使用netbeans7.3.1(ubuntu)。
这是我的代码:
package program;
import java.io.*;
//import java.lang.ProcessBuilder;
/**
*
* @author seed
*/
public class Program {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException,Exception {
File input = new File("//home//seed//Downloads//MADA-3.2//sample");
FileOutputStream out = new FileOutputStream(input);
PrintWriter p = new PrintWriter(out);
String s = "قصدنا في هذا القول ذكر";
p.println(s);
p.close();
Process pro = Runtime.getRuntime().exec("perl /home/seed/Downloads/MADA+TOKAN.pl");
pro.waitFor();
if(pro.exitValue() == 0)
{
System.out.println("Command Successful");
}
else{
System.out.print("wrong");}
// TODO code application logic here
}
}
最佳答案
我的猜测是某种字符串/路径转换问题。
我在您的代码中看到utf8字符串,也许路径被转换为某种东西。
文件名(MADA + TOKAN.pl)包含特殊字符,最好是MADAplusTOKAN.pl。
此外,脚本中的字符串与有问题的字符串也不相同:(MADA 3.2!= MADA-3.2)
perl MADA + TOKAN.pl config = / home / seed / Downloads / mada / MADA-3.2 / config files / template.madaconfig file = / home / seed / Downloads / mada / MADA 3.2 / inputfile
与
perl MADA + TOKAN.pl config = / home / seed / Downloads / MADA-3.2 / config-files / template.madaconfig file = / home / seed / Downloads / MADA-3.2 / sample