Eclipse не может загрузить изображения после экспорта пакета JAR?
Причина этой проблемы в основном из -за проблемы пути, которая часто используется в проекте, но после того, как она упакована в банку, ее нельзя отображать нормально. Давайте суммируем методы решения этой проблемы:
1. Решите, используя внешние файлы ресурсов
После упаковки проекта для генерации JAR создайте новую папку и поместите все файлы изображений, используемые в проекте, и сгенерированные файлы JAR в этом каталоге. Пока код правильно ссылается на файлы изображений, например: imageicon Image = new Imageicon (swingresourcemanager.getimage ("icons/logo.gif"));
Таким образом, файл изображения и файл класса не помещаются в пакет вместе. Файл класса находится в пакете, а файл изображения находится в каталоге Project Root.
2. Решите с помощью внутренних файлов ресурсов
Поместите файлы изображений, используемые в пакете проекта, и при упаковке файлы изображений вводятся в файл JAR одновременно. Этот метод должен использовать одно из следующих действий в конкретном коде:
ImageICon Image = new ImageICon (this.class.getResource ("icons/logo.gif"));Ниже приведено подробное описание этого метода:
Когда вы пишете программу для графических интерфейсов, вы должны использовать различные ресурсы изображений. Итак, когда вы публикуете свою программу, как вы публикуете эти ресурсы изображений?
Самый простой способ состоит в том, чтобы упаковать эти ресурсы изображений вместе с вашим файлом класса в файл исполняемого JAR, так что вам нужно только опубликовать файл JAR, чтобы включить все содержимое, и пользователи могут запустить программу, просто дважды щелкнув файл JAR. Если вы упаковываете изображения в файле JAR, как вы получаете доступ к этим изображениям при написании программ?
Каковы пути для этих картин? Вы можете использовать метод getResource () для решения этой проблемы.
Здесь мы анализируем две наиболее распространенные ситуации:
1. Вы упаковываете все ресурсы в Andy.jar, а ваш класс находится в пакете: пакет andycpp; Все ваши ресурсы изображения размещены в папке изображений, а папка изображений также находится в пакете AndyCpp. Таким образом, последний путь:
Энди
| __andycpp
| __ Guitest.class
| __ Изображения
| __ snap1.jpg
Поскольку папка изображений и класс, который ссылается на нее, расположены на одном уровне, вы можете получить к ней доступ по относительному пути:
java.net.url imgurl = guitest.class.getresource ("Images/snap1.jpg"); ImageIcon img1 = new ImageICon (imgurl);То, на что нужно обратить внимание, это проблемы с случаями! Внутренняя часть файла JAR чувствительна к корпусу, поэтому, если само изображение называется snap1.jpg, и вы пишете путь к Images/snap1.jpg, то изображение не будет найдено. Следует также отметить, что каждый класс (примечание, а не объект) имеет метод getResource (), но вы не можете использовать его случайно. Вы можете использовать только метод getResource () класса, который находится на том же уровне, что и папка изображения. Например, на приведенном выше рисунке класс и изображения Guitest находятся на одном уровне, поэтому вам необходимо использовать метод getResource () этого класса.
2. В другом случае, если у вас есть много классов, и структура упаковки очень сложна, то маловероятно, что вы поместите изображение и класс на одном уровне, но вам следует поместить картину на самый внешний слой и позволить всем классам получить доступ к картинку через абсолютные пути:
Энди
| __andycpp
| __ Guitest.class
| __ Изображения
| __ snap1.jpg
Код заключается в следующем:
java.net.url imgurl = guitest.class.getresource ("/images/snap1.jpg"); imageicon img1 = new ImageIcon (imgurl);Вы видели разницу из приведенного выше кода? Разница очень тонкая. Просто добавьте обратную черту "/" перед "изображениями". Этот обратный склад представляет корневой каталог, и ни один обратный склад не представляет относительный путь.
В приведенной выше статье кратко рассказывается о проблеме Path Pulte of Java Packaging Images в банки - это весь контент, которым я поделился с вами. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.