【问题标题】:issue with running a perl script from java从 java 运行 perl 脚本的问题
【发布时间】:2013-07-28 05:13:24
【问题描述】:

我正在尝试从 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 如果它工作?
  • 为什么 // 当你使用 ProcessBuilder 时,路径是必需的?
  • 您可能还可以捕获输入流缓冲区并检查发生了什么。
  • 请查看此帖子:Java not running shell script。使用ProcessBuilder的方式,尝试设置工作目录
  • 我在试用后将ProcessBuilder作为评论。这不是我正在处理的代码的一部分。我想我会更新代码以使其更清晰。

标签: java perl


【解决方案1】:

我的猜测是某种字符串/路径转换问题。

我在你的代码中看到了 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

【讨论】:

  • 非常感谢您的来信。我更正了问题中的字符串。我尝试在将 Perl 文件重命名为 MADA.pl 后运行代码,但仍然无法正常工作!!我认为特殊字符不是问题
  • 嗯,存在转换问题,但这不是参数问题。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多