Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich versuche eine Datei aus einem Projektfolder zu lesen und abzuspielen.
Aber das gelingt nicht und ich finde nicht heraus was da falsch ist.
Kann mir jemand einen Tip geben.
Der Teil Test ist nur temp. drin um zu prüfen ob die Methode das File findet, tut sie aber auch nicht.
Der auskommentierte Code unter play teachervoice funktioniert
Code:
URL inputUrl = getClass().getResource("/FILESOURCE/teacher.wav");
String tvoice = inputUrl.getFile();
// test
int lendd = tvoice.length();
String Pathl = tvoice.substring(0, lendd - 11);
String dat = tvoice.substring(lendd -11, lendd);
Boolean istda = lftc.CheckFileExist(Pathl, dat);
// play teachervoice
//Media tsound = new Media(workingDir + fs + vokidtest + ".mp3");
Media hit = new Media(new File(tvoice).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();
Exception ist :
Code:
Caused by: MediaException: MEDIA_UNAVAILABLE : C:\Users\Jupp\Documents\NetBeansProjects\VOKTRAINER\file:\C:\Users\Jupp\Documents\NetBeansProjects\VOKTRAINER\dist\run377572054\VOKTRAINER.jar!\FILESOURCE\teacher.wav (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)
at javafx.scene.media.Media.<init>(Media.java:405)
at CONTROLLER.AppStart.TrainyourvoiceController.handletrainyourvoicedone(TrainyourvoiceController.java:161)
... 62 more
Naja, mein Vorschlag, die Fehlermeldung genauer zu studieren bleibt allerdings erhalten:
In der Exception oben steht folgender Pfad: C:\Users\Jupp\Documents\NetBeansProjects\VOKTRAINER\file:\C:\Users\Jupp\Documents\NetBeansProjects\VOKTRAINER\dist\run377572054\VOKTRAINER.jar!\FILESOURCE\teacher.wav
Hier stehen 2 Laufwerksbezeichnungen ... Also kann das schon Mal nicht funktionieren.
Ansonsten wäre noch interessant:
a) ob der Ordner FILESOURCE innerhalb der JAR-Datei liegt.
b) wo die Klasse liegt, die obigen Code ausführt, bzw. wo die Klasse mit der Main-Methode liegt. Denn: getClass().getResource(...) nimmt den relativen Pfad bezüglich dieser.
Die zwei Laufwerksbezeichnungen würde ich darauf zurückführen das ich aus der jar lesen möchte und zur Laufzeit der Pfad erzeugt wird, egal wo die jar dann liegt.
Weißt du wie ich die jar zur Laufzeit untersuchen kann?
Hab ich gemacht und dann folgende Exception bekommen.
Code:
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771)
... 52 more
Caused by: MediaException: MEDIA_UNAVAILABLE : C:\Users\Jupp\Documents\NetBeansProjects\VOKTRAINER\dist\run694780631\VOKTRAINER.jar!\FILESOURCE\teacher.wav (Das System kann den angegebenen Pfad nicht finden)
at javafx.scene.media.Media.<init>(Media.java:405)
at CONTROLLER.AppStart.TrainyourvoiceController.handletrainyourvoicedone(TrainyourvoiceController.java:162)
... 62 more
Dann bin ich zur Laufzeit dem Pfad nachgegangen und hab per rar die jar angeschaut.
Da ist doch auch alles wo es sein sollte.
Übersehe ich da was ?
In der Doku zum Konstruktor von Media steht: "Only HTTP, FILE, and JAR URIs are supported.", außerdem wird explizit auf die Syntax verwiesen, die in JarURLConnection spezifiziert wird. Ich würde mal in die Richtung gehen und einfach mal inputUrl verwenden.