Двоичный исполняемый файл Java показывает разные результаты
Я пытаюсь запустить двоичный файл, используя мой 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 / репозитории /asticsearch-ingest-opennlp / src / main / go / Сентимент "я люблю это"
0
Однако, когда я запускаю ту же самую команду в моем терминале, я получаю 1. Почему это происходит?
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 });