Выполнение jar в терминале дает следующую трассировку исключения:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:155)
at tbs.ImageLoader.loadImage(ImageLoader.java:11)
at tbs.Flag.<init>(Flag.java:21)
at tbs.Model.<init>(Model.java:58)
at tbs.GameView.<init>(GameView.java:33)
at tbs.GUI.<init>(GUI.java:36)
at tbs.Main.main(Main.java:6)
Таким образом, похоже, что у вас было что-то вроде этого:
public Image loadImage(String name) {
return new ImageIcon(getClass().getResource(name));
}
... и getResource()
метод вернул null
, в результате чего конструктор ImageIcon
сгенерировал исключение.
В строке 21 файла Flag.java вы использовали "images/flagNeutral.png"
в качестве строки изображения, но ваш файл jar содержит images/flagneutral.png
(внутри каталога tbs
).Видите разницу?
Если это работало в вашей локальной системе за пределами jar, вы используете там файловую систему без учета регистра.(Windows или Mac?) В jar, а также через HTTP и в «реальных» файловых системах URL-адреса чувствительны к регистру, что означает, что вы должны называть ресурс точно так же, как имя файла.
И да, обычно вы должны хотя бы попробовать свою программу самостоятельно и опубликовать трассировку стека, а также соответствующие строки кода.