2016-05-10 2 views
0

Хорошо, поэтому у меня есть простая программа, которая загружает аудиофайлы и воспроизводит их.Аудио ресурсы не будут воспроизводиться после экспорта в jar

я это для загрузки моих аудио файлов

Clip c1 = null; 
    try { 
     AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(songPaths[k + 1]).getAbsoluteFile()); 
     c1 = AudioSystem.getClip(); 
     c1.open(audioInputStream); 

    } catch (Exception ex) { 
     System.out.println("Error with playing sound."); 
     ex.printStackTrace(); 
    } 

Он прекрасно работает в моем IntelliJ, и когда я смотрю построить артефакты и попытаться запустить банку, который сделал это не удалось загрузить ресурсы. Мой массив songPaths выглядит так:

private final String[] songPaths = {"res/fcpOriginal.wav", "res/fcpRemix.wav", 
            "res/ibizaOriginal.wav", "res/ibizaRemix.wav", 
            "res/pohOriginal.wav", "res/pohRemix.wav", 
            "res/sugarOriginal.wav", "res/sugarRemix.wav", 
            "res/wavesOriginal.wav", "res/wavesRemix.wav"}; 

Я не совсем уверен, что происходит. Любая помощь будет принята с благодарностью.

ответ

0

Так что, если я понять иерархию каталогов правильно, у вас есть следующие:

ЦСИ

из/артефактов/nameOfProject_jar.

Рез

Вы должны поместить копию папки Рез в папку nameOfProject_jar. Поскольку рабочий каталог для вашего приложения теперь является вашей папкой nameOfProject_jar, поэтому, когда вы используете относительные пути, как вы, он будет искать папку res в каталоге nameOfProject_jar. :)

0

Я понял. ДЛЯ ЛЮБЫХ БУДУЩИХ ИССЛЕДОВАТЕЛЕЙ!

Я изменил

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(songPaths[k + 1]).getAbsoluteFile()); 

в

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(getClass.getResource(songPaths[k + 1])); 
Смежные вопросы