我试图在我的JavaFX应用程序中播放音频文件,代码对我来说很好,但我遇到了错误
我认为问题出在第28行:
"原因:java.lang.NullPointerExctive:无法调用"java.net.URL. toString()",因为"资源"在示例中为空。Main.start(Main.java:28)"
为什么资源为空?在我的文件结构中,我得到了资源包,但不管音频文件在哪里,错误都是一样的
我是新来的编码员,所以我不知道如何准确地读取这些错误。。。如果有人能帮忙,那就太好了
下面是代码和错误
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.IOException;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws UnsupportedAudioFileException, IOException, LineUnavailableException
{
String css = this.getClass().getResource("styles.css").toExternalForm();
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
root.getStylesheets().add(css);
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
final java.net.URL resource = getClass().getResource("test2.mp3");
final Media media = new Media(resource.toString());
final MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();
}
public static void main(String[] args) {
launch(args);
}
}
运行此代码后,我;我有这些错误
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:465)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:901)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.NullPointerException: Cannot invoke "java.net.URL.toString()" because "resource" is null
at sample.Main.start(Main.java:28)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:847)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
... 1 more
Exception running application sample.Main
Process finished with exit code 1
谢谢任何帮助!
由于@Slaw写下的问题与资源路径有关,下面的链接中有更多信息,
THX Slaw!
“请注意,使用JavaFX的媒体应用编程接口时,您不需要Java声音导入。还请注意,您应该保持对媒体播放器的强引用;如果它是垃圾收集的,媒体将停止播放。至于错误,如果使用指定的路径找不到资源,getResources(字符串)将返回空值。查看如何确定我的JavaFX应用程序所需的FXML文件、CSS文件、图像和其他资源的正确路径?了解相关帮助。”
我试图在一个网站中嵌入一个视频到一个简单的javafx应用程序的媒体视图中。我有一个示例代码,我用作我的javafx代码。它打开场景并播放音频,但不会播放视频。我怎样才能让它播放音频?我使用netbean IDE 8.0.2,JavaFx 8和场景生成器2.0我尝试过的代码如下。感谢先进。 我就是这样把孩子们抬上舞台的 下面是我从scene builder创建GUI后得到的FXML
媒体播放器类很好。然而,我无法播放存储在另一个类中的mp3文件(当鼠标单击时)。有人能检查我的密码吗? 这是我尝试用来播放音频文件的类: 当我运行程序时(在下面勾选的鼠标上),我得到了以下两个错误:错误1:线程“AWT-EventQueue-0”java.lang中的异常。不支持的操作异常:尚未实现错误2:线程“thread-3”java.llang中的例外。IllegalStateExcepti
尝试使用mediacontroller通过url播放音频文件 但我有一个错误: 09-11 10:28:23.970:E/MediaPlayer(912):尝试在没有有效MediaPlayer的情况下调用getDuration 09-11 10:28:23.970:E/MediaPlayer(912):错误(-38,0)09-11 10:28:23.990:E/MediaPlayer(912):尝
问题内容: 我正在用HTML5和Javascript制作游戏。 如何通过Javascript播放游戏音频? 问题答案: 如果您不想弄乱HTML元素: 这使用了接口,该接口播放音频的方式与element相同。 如果需要更多功能,我使用了howler.js库,发现它简单实用。
问题内容: 我正在模拟器中测试我的应用。 我正在下载文件,并以这种方式获取本地文件: 现在,我想使用AVAudioPlayer播放此文件,但是我总是遇到此错误: 播放代码: 我应该如何播放? 问题答案: 在iOS8下,您保存的路径在启动期间将无效。您看到的ID“ E5F13797-A6A8-48A1-B3C3-FBC3D7A03151”将随每次启动而更改。 解决方案是保存文件名而不是完整路径,并通
问题内容: 我正在尝试获取音频文件以在iPad上的Safari中自动播放。如果我在Mac上使用Safari浏览该页面,就可以了。在iPad上,自动播放不起作用。 问题答案: 更新: 这是一个hack,并且在IOS 4.X及更高版本上不再起作用。此版本适用于IOS3.2.X。 这不是真的。Apple不想在iPad上自动播放视频和音频,因为您可以在移动网络上使用大量流量。我不会将自动播放用于在线内容。