【问题标题】:Java: Call Perl script with Process(): wsd.plJava:使用 Process() 调用 Perl 脚本:wsd.pl
【发布时间】:2013-12-11 14:47:25
【问题描述】:

我让终端与 SenseRelate::AllWords 一起工作,使用以下命令:

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

但是,现在我尝试从我的 Java 代码运行 wsd.pl,它看起来像这样:

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 路径是项目的源文件夹(顶层,在 src、.git 等旁边)

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

谢谢!

【问题讨论】:

  • 我的第一个想法是确保你的工作目录是你真正认为的那样。我的第二个想法是检查您的 perl 脚本,因为它似乎为您提供了有效的输出,这可能不是从 java 调用的问题。

标签: java perl word-sense-disambiguation


【解决方案1】:
ProcessBuilder pb = new ProcessBuilder("wsd.pl", "--context", "test.txt", "--format", "raw");

还要确保您的工作目录正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多