2014-01-11 5 views
1

Я программирую на Java, используя Eclipse.Где я должен размещать свои ресурсы для Java-программы?

Я недавно попробовал воспроизвести звуковой файл в своей программе. Я сделал это:

URL url = this.getClass().getResource("ih.wav"); 
audioIn = AudioSystem.getAudioInputStream(url); 
clip = AudioSystem.getClip(); 
clip.open(audioIn); 
clip.start(); 

Это только работал, когда я пытался поставить ih.wav в папку BIN, как если папка бен была «базовая папка» для моего проекта. Помещение файла в основную папку проекта не помогло. Не помещал его в папку src.

Может кто-нибудь объяснить мне, где разместить ресурсы для программ Java? Кроме того, имеет значение, если я импортирую ресурсы в Eclipse? Благодаря

EDIT:

Пытался создать папку ресурсов в основной папке проекта, по-прежнему дает мне NullPointerException:

 URL url1 = this.getClass().getResource("res/ah.wav"); 
     audioIn = AudioSystem.getAudioInputStream(url1); 
     clip1 = AudioSystem.getClip(); 
     clip1.open(audioIn); 

     URL url2 = this.getClass().getResource("res/eh.wav"); 
     audioIn = AudioSystem.getAudioInputStream(url2); 
     clip2 = AudioSystem.getClip(); 
     clip2.open(audioIn); 

     URL url3 = this.getClass().getResource("res/ih.wav"); 
     audioIn = AudioSystem.getAudioInputStream(url3); 
     clip3 = AudioSystem.getClip(); 
     clip3.open(audioIn); 

     clip1.start(); 
     clip2.start(); 
     clip3.start(); 
+0

Вы перекомпилировали после помещения его в папку src? Ты уверен*? –

+0

Да, я уверен. Не должна ли папка проекта быть «базовой папкой» для проекта? Почему бит «отправная точка»? – user3150201

+2

создать папку 'resources', например' - src '- main ' - resources – nachokk

ответ

2

Лучшая практика будет создать папку (в зависимости от структуры пакета), который называется либо res, либо resources, где вы будете хранить ресурсы, связанные с проектом, такие как любые изображения или звуковые файлы.

В зависимости от предпочтения, поместите эту папку в основную папку проекта MyProject/res или поместите ее в соответствующий пакет, например. main.java.res

EDIT

Придерживаться более на ваш вопрос, я не слишком хорошо знаком с методом getResources(), так что вместо этого я бы лично рекомендовал использовать код, подобный:

File file = new File("ih.wav"); 
audioIn = AudioSystem.getAudioInputStream(file); 
clip = AudioSystem.getClip(); 
clip.open(audioIn); 
clip.start(); 

Это должен выведите результаты, которые вы ищете, учитывая, что вы соответствующим образом изменили его путь (например, "main/resources/ih.wav" или где бы вы не храпили файл.

+0

Пробовал то, что вы сказали, похоже, не работает. См. Мое редактирование. – user3150201

+0

Где вы создали папку? имея в виду, вам придется использовать путь в параметре 'getResource()' – JamoBox

+0

Я создал его в той же папке, где существуют src и bin. Основная папка проекта. – user3150201

4

Я бы создал папку resources внутри src что-то вроде src/main/resources. Вы хотели бы взглянуть на Maven, что является инструментом управления проектами и понимания, которые помогают в организации проекта.

+0

Я сделал именно это, но по какой-то причине я получаю исключение NullPointerException при попытке достичь файлов: \ Любые идеи? – user3150201

+0

@ user3150201 Ну, это всегда попытка и ошибка, но см. Это [ответ] (http://stackoverflow.com/questions/19071614/where-put-resources-dir-on-eclipse), если это поможет вам – nachokk

+0

@ user3150201 также сделать a clean & build – nachokk

5

Caveat: Я не использую Eclipse, я никогда не использовал Eclipse, мои знания о Затмении составляет читать другие сообщения и отвечать на вопросы здесь

Под свой проект, создать каталог с именем resources , Здесь размещайте все «ресурсы», к которым вы хотите получить доступ из своего приложения. Они будут объединены с вашим приложением в качестве встроенных ресурсов.

из приложения используют либо

this.getClass().getResource("/ah.wav") 

или

this.getClass().getResource("/resources/ah.wav") 

Предполагая, что вы поместили файлы на верхнем уровне resources пути. Если они находятся в подкаталоге, вам необходимо предоставить полный путь ...

Очистка, сборка и испытание

+0

+1 для хорошего объяснения и 'clean and build' – nachokk

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