2009-09-03 2 views
0

Hai У меня есть приложение, которое предназначено в netbeans6.0.1, где мне нужно, чтобы отобразить изображение как кодирование logo.My как нижеЗапуск файла Jar в одиночку

mLogo = new JLabel(); 
URL lUrlLogo = getclass().getResource("/com/images/image.gif"); 
Image lLogoimage = Toolkit.getDefaultToolkit().getImage(lUrlLogo); 
ImageIcon licon = new ImageIcon(lLogoimage); 
mLogo.setIcon(licon); 

Мой код работает отлично, когда я выполнить его в NetBeans, но когда я пытаюсь запустить мою банку файл, который создается NetBeans в дисте папки, это дает мне исключение

Uncaught error fetching image: 
java.lang.NullPointerException 
     at sun.awt.image.URLImageSource.getConnection(Unknown Source) 
     at sun.awt.image.URLImageSource.getDecoder(Unknown Source) 
     at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source) 
     at sun.awt.image.ImageFetcher.fetchloop(Unknown Source) 
     at sun.awt.image.ImageFetcher.run(Unknown Source) 

что проблема с моей банкой Может кто-нибудь помочь мне бежать моя банка Поблагодарили u

ответ

3

Ваш файл jar должен содержать изображение.

Для получения инструкций о том, как это сделать, см. this tutorial или this one. В принципе, если вы включаете файл в исходную папку (с соответствующим путем), все должно быть в порядке.

Если вы думаете, что вы уже получили изображение, выполняет

jar tvf file.jar 

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


EDIT: В соответствии с комментариями проблема оказалась обусловлена ​​чувствительностью к регистру.

Поиск ресурсов в файле jar: всегда с учетом регистра, тогда как загрузка их из файловой системы зависит только от регистра, если файловая система. Так что если ваш файл image.GIF, но вы ищете image.gif, тогда он будет работать, когда вы загружаетесь из файловой системы в Windows, но не в файл jar.

+0

Да, у меня есть изображение внутри моей банки и в том месте, где мне это нужно – chaithu

+0

, но все еще не работает – chaithu

+0

Если вы вызываете getResourceAsStream() вместо getResource(), что происходит? Если это возвращает null, то это звучит так, как будто файл * не * там или в нужном месте. У вас есть это правильно с точки зрения корпуса? Даже если ваша нормальная файловая система не учитывает регистр, поиск ресурсов в файле jar не будет. –

0

И вы проверили, что файл JAR содержит путь "/com/images/image.gif"?

Кроме того, я не уверен в ведущей косой черте, я всегда использовал относительные пути для доступа к ресурсам (но я думаю, это должно работать в любом случае).

В качестве примера из класса it.lapo.example.Main я использую getClass().getResource("resources/logo.png") и в JAR-файлы таким образом:

it/lapo/example/Main.class 
it/lapo/example/resources/logo.png 

Я знаю ... не сильно отличается от вашего собственного примера, но он работает ... так Наверное, ты слишком близка к правильной.

+0

Я использовал относительные пути, и я нашел свое изображение по указанному пути, но все еще не работал – chaithu