Java 运行时二进制显示不同的结果

Java runtime binary shows different results

我正在尝试使用我的 Java 代码 运行 一个二进制文件,但它给我的结果与我从我的终端 运行 自己得到的结果不同。

Java代码:

Runtime rt = Runtime.getRuntime();
String path = System.getProperty("user.dir") + "/src/main/go/Sentiment";
String command = path + " " + "\"i love this\"";
System.out.println(command);

Process p = rt.exec(command);
Scanner s = new Scanner(p.getInputStream()).useDelimiter("\A");
String output = s.hasNext() ? s.next() : "";
System.out.println(output);

这会打印:

/home/ninesalt/repositories/elasticsearch-ingest-opennlp/src/main/go/Sentiment "i love this"

0

然而,当我在终端中使用完全相同的命令 运行 时,我得到的是 1。为什么会这样?

切换到 Runtime.exec(String[]) 以避免引用参数时出现问题:

String command = System.getProperty("user.dir") + "/src/main/go/Sentiment";
String arg = "i love this";

Process p = rt.exec(new String[] { command, arg });