2013-09-14 3 views
0

Мне удалось сделать ресурсы, наконец, попасть в банку, используя класс с входным потоком, получающий ресурсы от класса, а также добавление изображений и звуков в папку в каталоге проекта в затмение и добавление его в путь сборки.Использование звука из ресурсов в файле jar

С этими изображениями, наконец, бегут изнутри банки. Тот же код с использованием AudioinputStream вместо image.io работает в идеале, когда вы нажимаете run.

Но из файла jar нет звуков.

Вот код в вопросе

AudioInputStream audioIntStream = AudioSystem.getAudioInputStream(    
Resourceloader.load("images/engine.wav")); 
Clip clip = AudioSystem.getClip(); 
clip.open(audioIntStream); 
clip.loop(Clip.LOOP_CONTINUOUSLY); 

title = ImageIO.read(Resourceloader.load("images/title.png")); 

Изображение файлы из одного каталога Прочти язя и банки, в то время, как сказал звуковой файл запускается только из язя не коробит еще баночка содержит аудиофайл

+0

Как примечание стороны, не кажется ли странным, что звуки находятся в каталоге «images»? В любом случае, вы проверили, что файл jar содержит wav-файл? Как насчет использования getResourceAsStream() вместо Resourceloader? – Kayaman

ответ

0

Загрузка ресурсов в Java может быть сложной. Однако, следующий фрагмент кода почти всегда то, что вы хотите:

Thread.currentThread().getContextClassLoader.getResourceAsStream(
    "path/to/resource/from/jar/root.file"); 

Я использую этот фрагмент так часто, что я мог ввести его во сне. Я бы скорректировал ваш код выше, чтобы использовать его для загрузки ваших ресурсов. Однако, если это не режет его, я хотел бы посмотреть на следующее:

  1. Проверить ресурсы после загрузки, и выбросить исключение, если они null.
  2. Откройте свой JAR в качестве ZIP-файла и убедитесь, что ресурс фактически по пути, указанному в вашем коде, начиная с корня JAR.
  3. Используйте Ant или Maven для создания JAR, а не GUI Eclipse. Это поможет гарантировать, что ваш JAR всегда будет построен таким же образом и уменьшит вероятность ошибок вручную. Рекомендуется использовать Maven и стандартный каталог Maven src/main/resources/.
+0

Tried AudioInputStream audioIntStream2 = AudioSystem.getAudioInputStream (Thread.currentThread(). GetContextClassLoader.getResourceAsStream ( "images/engine.wav")); gpt не может найти предупреждение переменной потока getContextClassLoader. –

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