Чтобы подтвердить указанную вами файловую структуру, я предполагаю следующие два файла.
Project/src/Main.java
Project/ResourceMusic/forest/day.ogg
Я бы попробовал следующее:
Music forest = TinySound.loadMusic("ResourceMusic/forest/day.ogg");
Но я не 100 % уверен, что это сработает.
Вот мое лучшее понимание того, что происходит.
Литеральный класс TinySound
содержит следующий код для чтения ресурса (после выполнения нескольких проверок):
URL url = TinySound.class.getResource(name);
Теперь, если бы name
был относительным адресом, можно было бы ожидать, что файл будет расположен относительно папки, в которой находится сам класс TinySound
. Но поскольку перед ним стоит «/» (что можно увидеть, посмотрев на источник), используется адрес absolute . Таким образом, верхняя папка исходного кода проекта используется как адрес root.
Например, у меня есть проект Eclipse под названием «ScratchPad». В этом пакете, называемом «dodads», со следующим классом:
package dodads;
import java.net.URL;
public class TestAbsoluteAddressing
{
public static void main(String[] args)
{
TestAbsoluteAddressing taa = new TestAbsoluteAddressing();
taa.doAbsTest();
}
private void doAbsTest()
{
URL url = this.getClass().getResource("myAudio.wav");
URL url2 = this.getClass().getResource("/myAudio.wav");
if (url != null) System.out.println("relative found");
else System.out.println("relative not found");
if (url2 != null) System.out.println("absolute found");
else System.out.println("absolute not found");
}
}
Следующая файловая структура выявляет «относительное найдено» и «абсолютно не найдено»:
ScratchPad/src/doodads/TestAbsoluteAddressing.java
ScratchPad/src/doodads/myAudio.wav
следующая файловая структура выявляет «относительный не найден» и «абсолютный найден»:
ScratchPad/src/doodads/TestAbsoluteAddressing.java
ScratchPad/src/myAudio.wav
Теперь вызывает беспокойство то, что структура файлов, которую вы мне предоставили, не включает папку с файлами «sr c» . Так что я не совсем уверен, что указанная мной адресация сработает.