Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java运行perl脚本时出现问题_Java_Perl - Fatal编程技术网

从java运行perl脚本时出现问题

从java运行perl脚本时出现问题,java,perl,Java,Perl,我试图从java代码运行一个Perl脚本文件,但它不适合我。我修改了Perl脚本并将参数放入其中,而不是通过java代码传递它们。当从命令行运行脚本时,它可以正常工作,但它在java代码中不工作,总是打印“错误”!!。我编写了另一个Perl脚本(test.pl),它可以工作,但所需的脚本不能工作??我在使用netbeans7.3.1(ubuntu)。 这是我的密码: package program; import java.io.*; //import java.lang.ProcessBui

我试图从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

vs


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

这听起来像是在查找并执行perl脚本,因为test.perl和MADA.perl运行正常


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

如果它工作,您确定它应该具有退出值0吗?为什么在您使用ProcessBuilder时,路径需要退出值//呢?您可能还可以捕获inputstream缓冲区并检查发生了什么。请检查此帖子:。使用
ProcessBuilder
方法,尝试设置工作目录。尝试后,我将ProcessBuilder作为注释。这不是我正在编写的代码的一部分。我想我会更新代码让它更清晰。非常感谢你的留言。我更正了问题中的字符串。我尝试在将Perl文件重命名为MADA.pl后运行代码,但仍然无法运行!!我认为特殊字符不是问题所在。好吧,有转换的问题,但这不是争论的问题。