如何从资源获取JavaFX mp3加载
我在StackFlow上发现了许多相关的问题,但似乎没有一个适合我。 问题很简单:我尝试用JavaFXMediaPlayer播放mp3。 使用代码:如何从资源获取JavaFX mp3加载,java,javafx,Java,Javafx,我在StackFlow上发现了许多相关的问题,但似乎没有一个适合我。 问题很简单:我尝试用JavaFXMediaPlayer播放mp3。 使用代码: @Override public void start(Stage theStage) throws MalformedURLException { // this is the location, copy pasted from fileproperties in explorer : // C:\Users\User
@Override
public void start(Stage theStage) throws MalformedURLException {
// this is the location, copy pasted from fileproperties in explorer :
// C:\Users\User\IdeaProjects\gamelogic3\src\main\resources\music.mp3
Media media = new Media("file:///Users/User/IdeaProjects/gameLogic3/src/main/resources/music.mp3");
//Media media = new Media(MEDIA_URL);
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();
结果如下:
原因:java.lang.IllegalAccessError:class com.sun.media.jfxmediimpl.nativemediamanamanager(在未命名模块@0x160d9abc中)无法访问class com.sun.glass.utils.NativeLibLoader(在模块javafx.graphics中),因为模块javafx.graphics不会将com.sun.glass.utils导出到未命名模块@0x160d9abc
在com.sun.media.jfxmediimpl.NativeMediaManager.lambda$new$0(NativeMediaManager.java:110)
位于java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
首先,我尝试了最方便的方法:(从资源中加载):
但这会导致空指针异常:
原因:java.lang.NullPointerException:无法调用“java.net.URL.toString()”,因为“resource”为null
在mainStartup.Main.start(Main.java:57)
这有点奇怪,因为它直接来自于一个教程:
我尝试了两个以上的文件(mp3和wav),但结果相同。
我甚至将文件复制到根文件夹,并更改url的
我可以从Intellij中的资源文件打开mp3。当我在Intellij中重命名mp3文件时,代码中的名称会随之改变,因此我相信路径是正确的
该项目在Windows10机器上使用openjdk-15语言级别的15个文本块
,没有声音代码,javafx项目正在为动画工作
任何有助于的资源
null
可能是因为您提供了Class.getResource()
的相对路径,这意味着它将在与类的包相对应的目录中查找。尝试改用getResource(“/music.mp3”)
(注意斜杠)
但是,您将再次遇到原来的问题,这是由于无法访问javafx.media
模块造成的。我相信这会有所帮助
@Override
public void start(Stage primaryStage) {
final URL resource = getClass().getResource("music.mp3");
final Media media = new Media(resource.toString());
final MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();