Я пытаюсь выполнить julia.exe
в Java.Выполнение команды julia.exe в Java
Вот код:
Process pTest = Runtime.getRuntime().exec("C:/Program Files/Julia-0.4.1/bin/julia.exe");
Когда я запускаю его, ничего не происходит.
Однако, если я попробую другой исполняемый файл, он работает хорошо. Например:
Process pTest = Runtime.getRuntime().exec("C:/Program Files/anotherProgram/program.exe");
program.exe
будет работать так, как ожидалось.
julia.exe
немного специальный.
Если я запустил его в командной строке, он будет выполнен в командной строке. Другими словами, он не откроет собственное окно.
Я сделал тест:
#julia script, it's path: C:/Users/Thomas/Julia/test.jl
function test1()
println("it's test1")
end
test1()
Я выполнить эту команду в командной строке:
C:\>C:/Program Files/Julia-0.4.1/bin/julia.exe C:/Users/Thomas/Julia/test.jl
тогда я буду получать it's test1
в командной строке.
Мне нужно выполнить C:/Program Files/Julia-0.4.1/bin/julia.exe C:/Users/Thomas/Julia/test.jl
в моем проекте java и получить it's test1
на консоли затмения.
Вот мой Java проект:
public class Main {
public static void main(String[] args){
try {
String[] params = {"C:/Program Files/Julia-0.4.1/bin/julia.exe", "C:/Users/Thomas/Julia/test.jl"};
Process pTest = Runtime.getRuntime().exec(params);
try {
if (pTest.waitFor() != 0) {
System.err.println("exit value = " + pTest.exitValue());
}
BufferedReader in = new BufferedReader(new InputStreamReader(pTest.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
String line = null;
while ((line = in.readLine()) != null) {
stringBuffer.append(line+"-");
}
System.out.println(stringBuffer.toString());
} catch (InterruptedException e) {
System.err.println(e);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Работает ли это при запуске командной строки? – Rao
1. Что должна делать программа? 2. Соответствуете ли вы потокам процесса? –
У вас есть права администратора на место исполняемого файла? – nullpointer