2013-05-03 2 views
0

Я сделал аудиоплеер, а банку было сделано с netbeans. Для того, чтобы загрузить изображения, которые я использовал:Выполнение проблемы с банкой - ошибка выборки ошибок

ClassLoader cl = this.getClass().getClassLoader(); 
    URL playerIconURL = cl.getResource("tp/audioplayer/Images/icon.png"); 
    if (playerIconURL != null){ 

     ImageIcon playerIcon = new ImageIcon(playerIconURL); 
     frame.setIconImage(playerIcon.getImage()); 
    } 
    else{ 

     System.err.println("cannot load player icon"); 
    } 

Я упоминаю, что папка изображений в ГКЗ/TP/аудиоплеера.

Когда я бегу применение внутри Netbeans все ли в порядке, но когда я исполню банку в командной строке при запуске приложения, но это пустой, и блоки, и я получаю:

enter image description here

Может вы говорите мне, что я сделал неправильно или в чем проблема? Заранее спасибо!

ответ

0

Попробуйте любой из них:

// using getResourceAsStream 
InputStream is = this.getClass().getResourceAsStream("picture.gif"); 
// or 
InputStream is = MyClass.class.getResourceAsStream("stuff.ser"); 
// or 
InputStream is = MyApp.class.getClassLoader().getResourceAsStream("InWords.properties"); 

Ресурс в файле фляги должны быть квалифицированы с таким же именем пакета, как класс вы называете getResourceAsStream с. Кроме того, вы можете использовать абсолютное имя, начинающееся с /, где точки отображаются в/s. Если у вас нет руководства /, у вас есть относительное имя, и имя пакета будет добавлено. Если вы используете /, вы должны указать имя пакета самостоятельно или какое-либо имя, которое ресурс подан в банке. Например, вы можете указать /com/mindprod/mypackage/mystuff.ser или /com.mindprod.mypackage.mystuff.ser или просто mystuff.ser. Не используйте имена файлов в стиле Windows. Это не имена файлов, а ресурсы Java, которые живут вместе с файлами класса либо в баночках, либо иногда отдельно на диске или на сервере.

Теоретически getResourceAsStream будет искать в локальном пути к классам, в банке и в каталоге, в который был загружен файл класса.

+0

Я пробовал, как вы сказали, и я все еще получаю эту ошибку. Может быть, я не поместил свою папку в папку проекта? это полный путь D: \ College \ Individual Projects \ Java \ Audio Player \ src \ tp \ audioplayer \ ld. В l d - последние папки с классами, и теперь я переместил папку «Изображения» в ld; Когда я разместил папку «Изображения», был в аудиоплеере. – Survivor

+0

Я решил свою проблему, и было лучше с InputStream, поэтому thx :) – Survivor

1

Если ф в вашем пути к классам, вам придется загрузить его с cl.getResource("/tp/audioplayer/Images/icon.png") если ф НЕ исходная папка (но все-таки добавил к buildpath.

Если добавить тп как sourcefolder затем cl.getResource("/audioplayer/Images/icon.png")

Обратите внимание, что банки не чувствительны к регистру, убедитесь, что вы задаете путь к файлу.

+0

все мои пакеты похожи на tp.audioplayer.ld. и так далее, и если я позволю cl.getResource ("/ audioplayer/Images/icon.png"), как вы говорите, он вообще не загрузит изображение. – Survivor

+0

См. Edit, забыл добавить первый путь. Предполагалось, что tp является исходной папкой (обычно вы добавляете корневую папку ресурсов в качестве исходной папки, чтобы не было необходимости добавлять к ней еще одну директорию). – arynaq

+0

Невозможно добавить изображение вообще, если я начинаю путь с /. Я получаю сообщение об ошибке из инструкции – Survivor

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