Экспорт изображений с помощью JAR в Eclipse (Java) - PullRequest
2 голосов
/ 02 февраля 2011

Я работал над небольшим проектом, который требует внешних изображений для отображения. Я не очень хорошо знаком с тем, как использовать Eclipse, и я впервые пытаюсь экспортировать законченный проект, чтобы поделиться им с другими. Прямо сейчас, кажется, что единственный способ, которым я могу показать свои изображения, - это если я назначу определенную папку на своем жестком диске и укажу пути к изображениям в коде. Я ищу способ экспортировать изображения как часть моего JAR-файла или как часть того же пакета, поэтому, когда я отправляю эту программу другим людям, мне не нужно отправлять им отдельную заархивированную папку изображений. Мне также было бы интересно узнать, что мне нужно сделать, чтобы мой код ссылался на изображения в этом пакете, чтобы они работали без внешней папки. Я читал о какой-то системе пакетов в Eclipse, но до сих пор не смог понять, как ее использовать. Могли бы использовать некоторые объяснения!

Заранее спасибо всем, кто хочет дать мне свои два цента.

Ответы [ 6 ]

10 голосов
/ 04 декабря 2012

Что-то, что я нашел бы полезным в этом ответе, заключается в следующем: убедитесь, что вы помещаете ваши изображения / файлы в ту же папку затмения (или подпапку ниже), что и ваш исходный код. Я создал папку «images_ignored» с помощью eclipse, добавил ее в путь сборки, но все равно она отказалась быть включенной в мой файл JAR (при создании исполняемого JAR).

Eclipse screenshot showing were to put images

6 голосов
/ 18 мая 2012

Просто перетащите папку с изображениями в проект Eclipse, затем выберите «Копировать новую папку» или «Копировать файл и папку» в зависимости от версии Eclipse, а затем щелкните правой кнопкой мыши папку с изображениями (в Eclipse) и -> buildпуть "использовать как исходную папку".

2 голосов
/ 02 февраля 2011

вам может понадобиться загрузить их как ресурсы пути к классам, если они находятся в банке. смотрите: getClass (). getClassLoader (). getResourceAsStream (...)

1 голос
/ 02 февраля 2011

Используйте getResource () для загрузки изображений:

ImageIcon qmarkIcon = new ImageIcon(getClass().getResource("images/mark.gif"));
0 голосов
/ 08 ноября 2014

Если вы используете JDK 1.7 или JDK 1.8, вы можете использовать NIO.2 API.

for (FileSystemProvider provider : FileSystemProvider.installedProviders()) {
    if ("jar".equals(provider.getScheme()))
        return provider.newFileSystem((new File(Start.class
                .getProtectionDomain().getCodeSource().getLocation().toURI()))
                .toPath(), new HashMap<String, Object>());
}

Если вы введете этот код в метод, который возвращает java.nio.file.FileSystem, вы можете вызвать метод для получения FileSystem для файла JAR.

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

fileSystem.getPath("/images/image.gif")

Если вы хотите иметь возможность запускать это в Eclipse, убедитесь, что вы окружили вызов метода попыткой / перехватом IOException и присвойли своему объекту FileSystem следующее.

new File(Start.class.getProtectionDomain().getCodeSource().getLocation().toURI())
        .toPath().toString();

Это позволит вам запустить вашу программу независимо от того, сжата она в файл JAR или нет.


Я рекомендую вам привыкнуть к использованию NIO.2, поскольку это очень мощный API.

0 голосов
/ 07 ноября 2013

Если вы добавляете папку для построения пути, вы можете получить изображения либо в Eclipse, но и когда вы экспортировали ее в файл JAR, просто не забудьте не ссылаться на изображение с путем, например img/myImage.gifно только myImage.gif!

...