Как связать изображения в jar-файл - PullRequest
13 голосов
/ 16 февраля 2010

Я сделал приложение java. И связал все классы в jar-файле. Когда я запускаю проект из NetBeans, мое приложение успешно работает. я не получаю значки, используемые моим приложением. В коде я получаю значки из каталога изображений, присутствующего в папке проекта.

Теперь я хотел бы знать, как мы можем представить эти файлы изображений конечному пользователю (как мы представляем файл .jar). Заранее спасибо

Ответы [ 2 ]

29 голосов
/ 20 февраля 2010

Кажется, здесь есть два вопроса:

  1. Как заставить NetBeans включить файл изображения в банку, созданную при сборке проекта?

  2. Как получить доступ к файлу изображения из банки?

Этот ответ относится к NetBeans 6.8 и касается обоих подзапросов.

Предположим, у вас есть проект приложения Java на основе муравьев.

Вот представление «Файлы» проекта

JP
+ images
  + test.jpg
+ nbproject
+ src
  + jp
    + Main.java
+ test
+ build.xml
+ manifest.mf

Внутри Main.java у вас есть такой код:

public static void main(String[] args) throws IOException {
    // find the file in the file system.. probably not a good idea
    File f = new File("images/test.jpg");
    System.out.println(f.getCanonicalPath()+" "+f.exists());

Когда вы запускаете этот проект из NB, вы получаете такой вывод:

/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true

Когда вы запускаете код, упакованный в банку, вы получаете что-то вроде этого:

bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.txt false

Чтобы получить что-то лучшее, когда исполняется банка, вам нужно сделать следующее:

Добавить каталог изображений в качестве исходного корня для вашего проекта .

Щелкните правой кнопкой мыши по проекту и выберите пункт «Свойства». Появится диалоговое окно.

Выберите «Источники» в списке, который находится в левой части диалога. Это изменит содержимое панели в правой части диалога.

Нажмите кнопку «Добавить папку ...», которая появляется рядом с таблицей «Папки с исходными файлами». Появится FileChooser.

Используйте этот переключатель, чтобы выбрать папку изображений и нажать кнопку OK. К записи для папки с изображениями будет добавлена ​​таблица.

Используйте кнопку OK в диалоговом окне "Свойства проекта", чтобы принять изменения и закрыть диалоговое окно.

Измените код для использования Class.getResource () .

public static void main(String[] args) throws IOException {
    // find the file in the file system.. probably not a good idea
    File f = new File("images/test.jpg");
    System.out.println(f.getCanonicalPath()+" "+f.exists());
    URL url = Main.class.getResource("/test.jpg");
    System.out.println(url);

Когда вы запускаете проект из среды IDE, вы должны увидеть что-то вроде этого:

/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg

Когда вы запустите код, упакованный в банку, вы получите что-то вроде этого:

bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.jpg false
jar:file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar!/test.jpg

После того, как вы получите URL для файла test.jpg, вы можете использовать ImageIcon (URL) для создания иконки

3 голосов
/ 03 ноября 2010

Для проекта Maven в NetBeans 6.9 поместите файл в раздел «Ресурсы» в папке «Другие источники» проекта.

И убедитесь, что вы не забыли главную "/"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...