2013-11-30 4 views
0

Я знаю, что это было предложено много, и я пытался, вероятно 20-30 различных методов из затмения (Kepler, Ганимед, Galileo), FatJar, NetBeans, Bluej, командной строки и руководство.Исполняемые Jar File

В принципе, каждый раз, когда я исполню это создаст файл Jar (яй). Когда я нажму на него, он запустит игру (yay!). Но когда я нажимаю start, он зависает (boo!).

Я подумал, что это было что-то делать с чтением ресурсов. Однако на начальном экране (который работает в исполняемом банке) есть фон ресурса, и он читается просто отлично. Он не производит никаких ошибок (что я могу сказать). Кажется, я вообще не запускаю его в командной строке.

Я поставил код вверх на GitHub, но она автоматически игнорирует мою папку BIN (не уверен, если это проблема). Вероятно, я попытался использовать все возможные варианты экспорта в Eclipse, и это всегда одна и та же проблема.

Конечно, как и все другие проблемы, он будет работать с Eclipse IDE, когда я нажимаю запустить, просто не из исполняемого файла.

Я столкнулся с некоторыми людьми, чтобы переместить папку «Ресурсы» внутри пакета внутри src.I еще не попробовать этот метод в основном потому, что должно быть возможно сохранить папку ресурсов отдельно от папки src, и я бы предпочитают держать их таким образом.

https://github.com/Gostdreamer/DragonBash/tree/master/MyGame

Пример того, как я доступа к ресурсам (Таким образом, вы не должны читать все мой код, если вы не хотите)

InputStream in = getClass().getResourceAsStream("/Maps/level1-1Type.map"); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

И:

tileset = ImageIO.read(getClass() 
      .getResourceAsStream("/Tilesets/grasstileset4.gif")); 

И:

BufferedImage spritesheet = ImageIO.read(getClass() 
       .getResourceAsStream("/Sprites/Player/playersprites.gif")); 

Некоторые скриншоты организации:

enter image description here

enter image description here

I have tried with the jre library checked and unchecked

Я попытался с помощью библиотеки JRE проверяемых и непроверяемых

Редактировать 1 Я нашел себе ошибку , Это новое, это от FatJar компилировать с помощью Eclipse, Keplar и запустить его из командной строки

http://www.codesend.com/view/13b1bbf472f10880992f6fd096eae24b/

Используя ссылку codesend, чтобы не увязнуть StackOverflow с большим количеством ошибок

Edit 2 enter image description here

Внутри.баночка

+0

Если бы я был вами, я бы использовал Maven (и плагин M2E Eclipse), чтобы создать ресурс .jar вместо использования встроенного метода экспорта jar. Это может упростить вам вещи или, возможно, упростить понимание того, как ваши ресурсы загружаются. – djangofan

+0

Хорошо ... Я только что получил Maven/M2E и ... не имею идеи, как его использовать, с тех пор был googling. Однако, в то же время, есть ли способ, которым я могу просто изменить путь так, чтобы он выполнялся? –

+0

Вам нужно использовать плагин «maven-exec» (вызвать его с помощью «mvn.bat exec: java») и «maven-jar-plugin» (используя «пакет mvn.bat»). Это немного кривая обучения, но если ее слишком много для вас, вы все равно можете сделать это так, как делаете сейчас, пока не научитесь использовать Maven позже. Возможно, вы также можете использовать Gradle, который имеет аналогичное использование, но не настроен на запутывание XML. – djangofan

ответ

2

EDIT

Я понимаю, что проблема есть.

Загрузка и упаковочные материалы исправлены неправильно, поэтому они подходят как null.

/ относится к вашему CLASSPATH, который, когда вы строите единую исполняемую банку со всем в ней, является корнем вашей банки.


Старый ответ:

Чтобы получить ошибки, которые будут отображаться:

  1. Убедитесь, что вы начинаете баночку из командной строки.

  2. Если у вас есть что-нибудь подобное в вашем коде,

    catch(Exception ex) {} 
    

или что-нибудь еще, что подавляет исключения, удалить или, если это не представляется возможным, изменить его на:

catch(Exception ex) { 
    ex.printStackTrace(); 
} 

Если у вас несколько потоков, вам может потребоваться исключить исключения на верхнем уровне ваших потоков (это не обязательно для основного потока).

Если все остальное не работает, используйте jstack.

+0

Alrighty, я получил некоторые ошибки и загрузил их тоже. В начале кажется, что он не получает графический ресурс, который, кажется, играет в последние ошибки, когда он переходит в анимацию, так как графика не существует. Затем он переходит к большему, что я на самом деле не получаю, но он не должен вызывать ошибки ресурса с помощью Slugger, я не понимаю :( –

+0

Хорошо, мне жаль, что я понимаю, что вы говорите, но что я ставлю вместо этого так, чтобы он попадал в нужное место? Я никогда не использовал/ –

+0

Что в вашем исполняемом банке? Где находятся ресурсы в банке? –