Пытается создать базовую пусковую установку для Java-игры. Я создаю правильную команду для запуска приложения. Когда в пусковой установке запускается следующая команда, пусковая установка закрывается, как ожидалось, но команда не работает, либо она не работает, либо игра запускается и сразу же падает.Аргумент командной строки работает в консоли, сбой изнутри Runtime.getRuntime(). Exec
Когда я печатаю эту же команду на консоль и копирую/вставляю ее в консоль и выполняю вручную, она отлично работает.
/**
*
*/
protected void launch(){
currentStatusMsg = "Launching...";
String cmd = "java -jar";
cmd += " -Djava.library.path=\"" +nativesDirectory.getAbsolutePath() + "\"";
cmd += " \""+applicationJar.getAbsolutePath() + "\"";
System.out.println(cmd);
try {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);
//closeLauncher();
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line=null;
while((line=input.readLine()) != null) {
System.out.println(line);
}
int exitVal = pr.waitFor();
System.out.println("Exited with error code "+exitVal);
} catch(Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
}
Я попытался добавить что-то, чтобы прочитать результат, но ничего не печатается.
Я был первоначально используя следующий формат вместо этого, но он имеет тот же эффект:
Process pr = Runtime.getRuntime().exec(new String[]{
"java",
"-Djava.library.path=\"" +nativesDirectory.getAbsolutePath() + "\"",
"-jar",
applicationJar.getAbsolutePath()});
Update я понял, что закрытие запуска, прежде чем разрешить отладки кода для запуска. Система только печатает: «Выход с кодом ошибки 1»
Наконец-то я смог получить ошибку подпроцесса для печати. В нем говорится:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
Однако, она должна быть доступна, так как команда я выполнение включает в себя путь к библиотеке, и когда это точная команда выполняется вручную, она отлично работает.
Будут ли обрабатываться кавычки автоматически, так как часто в них есть пробелы. – helion3
Я обновил сообщение. Я использовал 'String []' изначально, но имел тот же результат. – helion3
@BotskoNet - вам нужно всего лишь указать, когда вы используете оболочку, поэтому я указал, что вы должны удалить _all_ кавычки (поэтому путь библиотеки все еще не работает). – jtahlborn