2013-05-26 3 views
0

Я делаю проект Java, и теперь, когда он закончен, я хочу сделать версию .jar. Но когда я запускаю версию .jar, изображения не включаются. Я работаю с Netbeans на Mac.Изображения не работают .jar

Я пытаюсь сделать этот код:

private static String chemin = System.getProperty("user.dir"); 
private String fond_path = chemin+"/src/hepta/Images/FondParametres.png"; 

fondPanels = new ImageIcon(fond_path); 

Но, похоже, не работает в .jar версии, даже если изображения находятся на том же месте, чем раньше!

Мой квест, почему он отличается от того, что путь доступен?

(я точен, что я сделать некоторые исследования, чтобы найти некоторые коды, как это:

URL imageurl = getClass().getResource("/images/images2.gif"); 
Image myPicture = Toolkit.getDefaultToolkit().getImage(imageurl); 
JLabel piclabel = new JLabel(new ImageIcon(myPicture)); 

, но я не очень понимаю разницу)

Спасибо!

ответ

3

Разница в том, что первая ссылка на файл. Путь указывает на файл в файловой системе.

Вторая ссылка на ресурс, указывающая на запись в zip-файле, которую Java знает, как читать.

Если вы посмотрите на папку, содержащую файл .jar, вы не найдете ни одного каталога src/hepta/Images. Это означает, что если вы попытаетесь использовать ссылку на файл, Java не сможет найти файл, о котором идет речь.

Вместо этого вам нужно указать Java для поиска ресурса на основе пути к пути/пути к классу, который указывает на ресурс, встроенный в файл .jar - это всего лишь zip-файл с некоторыми дополнительными функциями. ..

+0

Выглядит хорошо, спасибо за объяснения =) – user2057209

+0

И последний вопрос, если я хочу дать кому-то свой проект, я должен включить только .zip, который содержит .jar и проект, не так ли? – user2057209

+0

Вам нужно только дать им '.jar' и любые возможные зависимости. Закрепление банок не является обязательным ... – MadProgrammer

Смежные вопросы