Ich habe gerade angefangen mit JavaFX zu arbeiten. Ich weiß, wie die Grundlagen funktionieren. Ich habe versucht, die Medien und die Mediaplayer-Klassen zu verwenden, um einen Sound namens "sound.mp3" abzuspielen. Ich programmiere in Eclipse und habe die Sounddatei im src-Ordner, der gleiche Ordner wie "(Standardpaket)". Hier ist mein Code:
import javafx.scene.media.*;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
String ssound = "sound.mp3";
Media sound = new Media(ssound);
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();
StackPane root = new StackPane();
primaryStage.setScene(new Scene(root, 800, 450));
primaryStage.show();
}
}
Bitte sag mir, was ich falsch mache.
Hier ist die Fehlermeldung von der Konsole:
Exception in Application start method
Exception in thread "main" Java.lang.RuntimeException: Exception in Application start method
at com.Sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at com.Sun.javafx.application.LauncherImpl.access$000(Unknown Source)
at com.Sun.javafx.application.LauncherImpl$1.run(Unknown Source)
at Java.lang.Thread.run(Thread.Java:724) Caused by: Java.lang.IllegalArgumentException: uri.getScheme() == null!
at com.Sun.media.jfxmedia.locator.Locator.<init>(Unknown Source)
at javafx.scene.media.Media.<init>(Unknown Source)
at Main.start(Main.Java:16)
at com.Sun.javafx.application.LauncherImpl$5.run(Unknown Source)
at com.Sun.javafx.application.PlatformImpl$5.run(Unknown Source)
at com.Sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
at com.Sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at com.Sun.javafx.application.PlatformImpl$4.run(Unknown Source)
at com.Sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.Sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.Sun.glass.ui.win.WinApplication.access$100(Unknown Source)
at com.Sun.glass.ui.win.WinApplication$3$1.run(Unknown Source) ... 1 more
Nur eine funktionierende Zusammenstellung der anderen Antworten:
String musicFile = "StayTheNight.mp3"; // For example
Media sound = new Media(new File(musicFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();
Fügen Sie die Musikdatei zusammen mit bin
und src
in Ihrem Projektordner hinzu.
Jeder IDE fordert Sie auf, auch diese hinzuzufügen:
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import Java.io.File;
Klappt wunderbar.
mApplause = new AudioClip(this.getClass().getResource("/sounds/applause.mp3").toExternalForm());
Das ist, was ich verwendet habe und es hat funktioniert, ich weiß, dass es wahrscheinlich keine Rolle mehr spielt, aber da es in meine Google-Suche kam, während ich nach etwas anderem suchte, dachte ich, ich würde darauf antworten. :)
Das bedeutet, dass das externe Formular eine URL-Form der Pfaddatei bildet.
Das verwende ich momentan:
Media hit = new Media(new File(soundFilename).toURI().toString());
es hängt davon ab, wo sich die Audiodatei befindet. (es akzeptiert auch nur .wav) , wenn sich der Clip außerhalb des SRC-Ordners befindet, den Sie verwenden müssen
new Media("file:sound.wav")
wenn nicht, ist es in Ordnung, wie geht es dir?