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

10-08 00:56