我正在尝试使用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 “我喜欢这个”
0
但是,当我在终端中执行相同的命令时,却得到1。为什么会这样?
答案 0 :(得分:0)
切换到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 });