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 });
我正在尝试使用我的 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 });