import java.io.File;
import javafx.application.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;
public class SoundTest extends Application{
public static void main(String[] args) {
launch(args);
}
public static void sound() {
String path = "test.mp3";
Media media = new Media(new File(path).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();
}
@Override
public void start(Stage arg0) throws Exception {
sound();
}
}
Ich habe einige Probleme. Ich googelte und stolperte über einige hilfreiche Stack-Overflow-Posts, die erklärten, wie Sounds über Media und Media Player geladen werden.Java Audio wird nicht geladen. toURI funktioniert nicht?
Was ich tue ist, im Aufruf der Sound-Funktion in der Haupt(), aber mein Programm schlägt fehl, aufgrund einiger Fehler in der zweiten wie meine Sound-Funktion. Das Medienobjekt akzeptiert ein Argument im Konstruktor, das den Pfad zur Audiodatei darstellt. Irgendwie ist es nicht dort, wie ich bekommen.
Exception in thread "Thread-0" java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source)
at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source)
at javafx.application.Platform.runLater(Unknown Source)
at javafx.scene.media.Media$_MetadataListener.onMetadata(Unknown Source)
at com.sun.media.jfxmediaimpl.MetadataParserImpl.done(Unknown Source)
at com.sun.media.jfxmediaimpl.platform.java.ID3MetadataParser.parse(Unknown Source)
at com.sun.media.jfxmediaimpl.MetadataParserImpl.run(Unknown Source)
Exception in thread "main" java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source)
at com.sun.javafx.application.PlatformImpl.runLater(Unknown Source)
at javafx.application.Platform.runLater(Unknown Source)
at javafx.scene.media.MediaPlayer.init(Unknown Source)
at javafx.scene.media.MediaPlayer.<init>(Unknown Source)
at core.SoundTest.sound(SoundTest.java:43)
at core.SoundTest.main(SoundTest.java:13)
Mein Sound-Datei im Ordner meiner Eclipse-Projekt befindet, in dem die Klasse befindet Es ist ein 3 Minuten lang mp3-Datei in der src und bin Ordner befindet sich aber nicht innerhalb der Pakete. (Ich bin auf Windows).
Wie funktioniert das nicht? Warum bekomme ich diese Fehler?
Nur eine Anmerkung, der Code, den Sie zur Verfügung gestellt haben, stimmt nicht mit dem Stack-Trace überein, den Sie angegeben haben. Der Stapel-Trace sagt, dass er sich in einer Methode namens "alarm()" befindet, aber Sie haben 'sound()' bereitgestellt. – dcsohl
@dcsohl ah ja Entschuldigung. Das ist aber nicht so, krank ändern es wirklich schnell. Ich habe den Methodennamen geändert. Wie auch immer, ich habe es korrigiert. – Asperger
Ok, nächster Kommentar: Haben Sie einen Debugger ausprobiert? Hast du dir angeschaut, was der eigentliche 'String' ist, den du an' new Media() 'übergibst? – dcsohl