JAR-файл, чтобы exe потерял фотографии

Я сделал следующий код для вставки картинок в свою Java-программу:

private String ICET = "." + File.seperator + "Bilder/ICET.jpg"
//some code
label.setIcon(new ImageIcon(ICET));
//some code

Это означает, что метка имеет IconImage, и она работает в каждой рабочей области с папкой "Bilder", которая находится в той же папке, что и программа. Он также работает как jar-файл, но если я конвертирую jar-файл в exe-файл с помощью launch4j, программа не показывает изображения.

2 ответа

Использование

new ImageIcon(getClass().getResource("path"));

путь -> если это та же папка, укажите только имя изображения: "ICET.jpg"

Скорее всего, рабочий каталог, установленный при запуске как exe-файл, отличается от того, когда он запускается как jar-файл, и, таким образом, ваша программа ищет неправильное место для вашей папки "Bilder".

Вы можете попробовать это, напечатав абсолютный путь к нему, например, так:

System.out.println(new File(".").getAbsolutePath());

Чтобы решить эту проблему, вы можете попробовать установить chdir-опция в файле launch4j-config для . (одна точка). Согласно документам:

Необязательный. Измените текущий каталог на произвольный путь относительно исполняемого файла. Если вы пропустите это свойство или оставите его пустым, оно не будет иметь никакого эффекта. Установка его на. изменит текущий каталог на тот же каталог, что и исполняемый файл... изменит его на родительский каталог и так далее.

Но в конце вы должны загрузить изображения из пути к классам, а не только из папки. Если вы читаете их из пути к классам, мы надеемся, что они должны быть интегрированы в исполняемый файл, в противном случае они не будут и могут отсутствовать при копировании пользователями в исполняемый файл в новом месте, что сделает вашу программу более не работающей.

Другие вопросы по тегам