我有一个使用Gradle文件构建的JavaFX项目,并且在Intellij中编写所有内容。 在其中,我使用javafx.scene.media.Media和javafx.scene.media.MediaPlayer来播放一些音乐。
public SoundPlayer(String filename) {
String soundLocation = "\\src\\main\\resources\\sound\\" + fileName;
String absolute = new File("").getAbsolutePath() + soundLocation;
System.out.println(absolute);
Media soundMedia = new Media(new File(absolute).toURI().toString());
mediaPlayer = new MediaPlayer(soundMedia);
}
我一直在使用的项目目录是:
src/
|---main/
|---|---java/
|---|---|---sound.SoundPlayer
|---|---resources/
|---|---|---sound/
|---|---|---|---click.mp3
|---|---|---|---bgm.mp3
然而,当我尝试将其编译并转换为jar文件时,Gradle将目录更改为以下内容(在jar文件中的顶级目录):
sound/
|---SoundPlayer.class
|---click.mp3
|---bgm.mp3
这导致它抛出了一个Media Exception: MEDIA UNAVAILABLE。我已经尝试将文件更改为以下两种情况之一:
Media soundMedia = new Media(new File("sound\\" + fileName).toURI().toString());
并且
Media soundMedia = new Media(new File(fileName).toURI().toString());
…但我总是收到相同的异常。发生了什么事?