的Java:调用Perl脚本 - 使用过程():wsd.pl

问题描述:

我得到SenseRelate :: AllWords工作,用这个命令的终端:的Java:调用Perl脚本 - 使用过程():wsd.pl

wsd.pl --context test.txt --format raw -- 

不过,现在我试图运行WSD。 PL从我的Java代码,它看起来像这样:

public static void main(String args[]) throws IOException { 
     String line; 
     ProcessBuilder pb = new ProcessBuilder("wsd.pl", "--context test.txt", "--format raw"); 
     pb.redirectErrorStream(true); 
     Process process = pb.start(); 
     InputStream stdout = process.getInputStream(); 


     BufferedReader reader = new BufferedReader (new InputStreamReader(stdout)); 

     while ((line = reader.readLine()) != null) { 
      System.out.println ("Stdout: " + line); 
     } 
    } 

它给我的错误:

Stdout: Unknown option: context test.txt 
Stdout: Unknown option: format raw 

test.txt的路径是到工程中的源文件夹t(顶级,在src,.git旁边)

我试过了一些不同的方法:向列表中添加参数并基于该列表创建一个新的进程,不同的格式化参数的方式但是没有,它不会工作。有人可以帮忙吗?我想这是我不熟悉的一些语法。

谢谢!

+0

我首先想到的是要确保你的工作目录是什么,你真的认为它是。我的第二个想法是检查你的perl脚本,因为它看起来像是给你有效的输出,这可能不是从java调用的问题。 – lscoughlin

ProcessBuilder pb = new ProcessBuilder("wsd.pl", "--context", "test.txt", "--format", "raw"); 

另外请确保您的工作目录是正确的。