У меня есть следующий код в статическом методе:Почему getResourceAsStream() не работает в JAR-файлах?
clips.open(AudioSystem.getAudioInputStream(Sound.class.getResourceAsStream("folder/sound.wav")));
Кроме того, folder
находится в том же каталоге, что и Sound.java
. Когда я запускаю программу в Eclipse, воспроизводится звук. Однако, когда я экспортирую файл в JAR-файл, звук больше не воспроизводится.
Если я изменю getResourceAsStream()
на getResource()
, как Eclipse, так и JAR-файл воспроизводят звук. Почему это происходит? Я читал, и многие люди считают, что getResourceAsStream()
просто не работает в JAR-файлах. Это так, и если да, почему бы и нет?
Я сомневаюсь, что ваш 'getResource' работает по-разному в случае JAR. –
Нет. С помощью getResource() файл JAR правильно воспроизводит звук. Другие также наблюдают это, например [здесь] (http://stackoverflow.com/a/15311535) и [здесь] (http://stackoverflow.com/a/16048907). – Kootling
Интересные ссылки. Я замечаю, что в этих потоках они не следуют с установлением истинной причины, по которой один работает, а другой - нет. Я подозреваю, что это связано с использованием InputStream или нет (согласно моему ответу). Но также имеет смысл заявить, что жизнь слишком коротка, и если у вас есть что-то, что работает, двигайтесь дальше! –