Все, что я пытаюсь сделать, это создать JLabel, используя изображение, расположенное в том же каталоге, что и .jar, и если он не существует, он будет загружать фотографию по умолчанию, расположенную внутри .jar сам. Картина существует в папке однако она всегда по умолчанию на картинке внутри .jarИспользование образа из той же папки, что и скомпилированный Jar, не работает
String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
File logo = new File(path + "logo.png");
JLabel lblNewLabel_1;
if (logo.exists()){
lblNewLabel_1 = new JLabel(new ImageIcon(logo.getPath()));
} else {
lblNewLabel_1 = new JLabel(new ImageIcon(Main.class.getResource("/com/daniel/Coffee.png")));
}
frame.getContentPane().add(lblNewLabel_1, BorderLayout.WEST);
final JLabel lblStatus = new JLabel(new ImageIcon(Main.class.getResource("/com/daniel/status1.png")));
frame.getContentPane().add(lblStatus, BorderLayout.EAST);
Проверка на getResource возвращения нуля. –
Вы не должны использовать 'String path = this.getClass(). GetProtectionDomain(). GetCodeSource(). GetLocation(). GetPath();'. Чтобы получить внешний файл, вы должны использовать класс Path: 'Path path = FileSystems.getDefault(). GetPath (" logo.png ");' – sanastasiadis
Если 'getResource' возвращает null, мы получим' NPE' здесь, я думаю, don Не так ли? – Antoniossss