Альтернативным теории к уже представлены. Часто успешные вызовы getResource() зависят от экземпляра загрузчика класса, который вызывается для их обнаружения. По этой причине я бы рекомендовал использовать экземпляр пользовательского объекта, из которого можно вызвать getResource(). НАПРИМЕР.
// Sanity check
System.out.println("The value of 'file' is: " + file);
// Presuming kidsClassRoom1 is an instance of kidsClassRoom
AudioInputStream inputStream = AudioSystem.
getAudioInputStream(
kidsClassRoom1.
getClass().
getResourceAsStream("/resources/"+file));
Вы также можете заметить, что фрагмент использует префикс «/» для ресурса. Вопреки тому, что говорят другие, я уверен, что это означает «из корня» пути ресурса, в любом Jar на пути класса времени выполнения. Если вы оставите «/» или «../», будет загружен загрузчик классов для поиска ресурса в подпути класса, в котором это происходит.
Конечно, убедитесь, что Wav попал в Jar! Скопируйте/переименуйте .jar в .zip и дважды щелкните по нему «быстрый & грязный» способ проверить содержимое архива в Windows.
удален «../» все еще не работает! – sarath
Попробуйте щелкнуть правой кнопкой мыши папку ресурсов и выбрать «Путь сборки -> Использовать в качестве исходной папки». (Это делается только для того, чтобы файлы были доступны для загрузчика классов при запуске из eclipse.) – aioobe
Я не использую никакой IDE сейчас :) – sarath