2014-10-26 2 views
0

Итак, я создал игровой пусковой механизм, который успешно загружает Zip и извлекает его. Но затем он пытается открыть файл Jar, который был в zip, и все, что происходит, - это игра, которая появляется примерно на 2 секунды и затем закрывается. Если я вручную дважды щелкнул по нему, он будет работать нормально, или если я запустил его через командную строку, он отлично работает ... Вот два фрагмента кода, который я пытался использовать, чтобы запустить Jar. (Обратите внимание, банку не возвращает никаких ошибок на бегу):Файлы Java Jar закрываются после запуска в течение 3 секунд

Runtime rt =Runtime.getRuntime(); 
rt.exec("java -jar \""+appdata+"\\gamefiles\\Game.jar\""); 

и ...

Process proc = new ProcessBuilder("java.exe", "-jar", appdata+"/gamefiles/Game.jar").start(); 
int result = proc.waitFor(); 
System.out.println(result); 

Любая обратная связь приветствуется, спасибо.

+0

Любые ошибки на выходе? У вас есть основная информация, указанная в манифесте для вашего файла jar, который вы пытаетесь запустить? – user2494817

+0

Ошибок на выходе нет. И да банка была скомпилирована с необходимыми библиотеками, использующими Jarsplice, и я использовал правильный путь для основного класса. – Frostsoft

+0

Вы не читаете stdout процесса, так как вы знаете, что нет ошибки? – MadProgrammer

ответ

0

Поскольку вы используете построитель процессов и не указываете ничего о среде, есть ли вероятность того, что ваш JAR-файл не сможет найти нужные элементы (например, местоположение JVM или путь к классам), поскольку он не получает переменная?

+0

хорошо используя «java.exe -jar% appdata%/gamesfiles/Game.jar» отлично работает в командной строке, поэтому у меня есть мои переменные окружения, установленные правильно. – Frostsoft

+0

Я ожидаю, что переменные окружения будут работать нормально в командной строке. Я бы поставил вопрос, работают ли они «отлично» в классе ProcessBuilder. Если это работает, когда ваш java-код 'appdata' равен'% appdata% ', тогда вы, вероятно, все в порядке. В любом случае, вероятно, есть библиотеки openGL, которые вы не набираете в Java, и есть вероятность, что они связаны с тем, что они не определяются/не обрабатываются одинаково с точки зрения ProcessBuilder. –

+0

Я использую это, чтобы найти переменную appdata в java «String appdata = System.getenv (« APPDATA »); и если файл jar запускается, когда я дважды щелкаю его, он загружает зависимости, которые я правильно думал. Вот почему я запутался, если он может работать автономно, почему он не запускается через Java-код. – Frostsoft

Смежные вопросы