2

我正在尝试从 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
    }
}
4

2 回答 2

0

听起来它正在查找您的 perl 脚本并执行它,因为 test.perl 和 MADA.perl 运行正常。

听起来确实像传递给 perl 脚本的参数不是预期的那样。您可以修改 perl 脚本以将其所有输入参数回显到文件中吗?

于 2013-07-31T12:33:43.957 回答
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

对比

perl MADA+TOKAN.pl config=/home/seed/Downloads/MADA-3.2/config-files/template.madaconfig file=/home/seed/Downloads/MADA-3.2/sample

于 2013-07-29T08:45:08.737 回答