从java运行perl脚本时出现问题
我试图从java代码运行一个Perl脚本文件,但它不适合我。我修改了Perl脚本并将参数放入其中,而不是通过java代码传递它们。当从命令行运行脚本时,它可以正常工作,但它在java代码中不工作,总是打印“错误”!!。我编写了另一个Perl脚本(test.pl),它可以工作,但所需的脚本不能工作??我在使用netbeans7.3.1(ubuntu)。 这是我的密码:从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
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后运行代码,但仍然无法运行!!我认为特殊字符不是问题所在。好吧,有转换的问题,但这不是争论的问题。