我正在尝试从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
}
}
答案 0 :(得分:0)
我的猜测是某种字符串/路径转换问题。
我在你的代码中看到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
VS
perl MADA + TOKAN.pl config = / home / seed / Downloads / MADA-3.2 / config-files / template.madaconfig file = / home / seed / Downloads / MADA-3.2 / sample
答案 1 :(得分:0)
听起来它正在找到你的perl脚本并执行它,因为test.perl和MADA.perl运行正常。
听起来像传入perl脚本的参数不是预期的。你能修改perl脚本以将其所有输入参数回显到文件吗?