Mac- NoSound wegen GC?

05/24/2018 20:58 .BritainAndy#1
Hallo zusammen,
habe ein Problem. Wieso wird folgender Code auf meinem Windows-Pc kompiliert und der Song fängt auch an zu spielen, und auf meinem Mac nicht?
Ich habe natürlich filepath angepasst auf beiden geräten und kriege auch auf beiden keine exception geworfen. Der song wird also auch auf dem Mac gefunden, aber ich höre keinen Sound. Auf dem Windows ohne Probleme..
Habe gelesen dass es am GarbageCollector liegen könnte, aber wüsste nicht was ich daran ändern soll außer die Vars evtl außerhalb der Methoden zu definieren aber das habe ich bereits probiert.

Ich hoffe jemand kann mir weiterhelfen.

05/24/2018 21:32 warfley#2
Also bei mir funktioniert der Code problemlos unter OS X 10.12 mit Java 1.8.0 und einem random mp3 file von meinem Rechner.

PS:
1. Den Nutzerordner des aktuellen users bekommst du übrigens über ~ also new File("~/desktop/xxx/Song.mp3");
2. Wenn die Datei im selben Ordner wie dein Programm liegt verwende relative Pfade (new File("./Song.mp3");
3. Windows kann auch mit relativen Unixpfaden umgehen, du musst also dementsprechend nichtmal zwischen ".\Song.mp3" und "./Song.mp3" unterscheiden, ich glaube es geht sogar auch bei kompletten Pfaden (Also "/Test/Test" würde als "C:\Test\Test" interpretiert werden) da bin ich mir aber nicht so sicher
4. Je nach Mac Generation ist ein Casesensitives Filesystem eingestellt. Auf manchen Macs wird der Pfad nicht funktionieren, da sowohl Desktop als auch Users großgeschrieben wird (Und falls du einen Linux Port machen willst, fast alle linux Distributionen verwenden standardmäßig case sensitive Dateisysteme)
05/25/2018 23:29 .BritainAndy#3
Nabend warfley,
Danke erst mal für die Antwort und die Tipps zu den Pfaden.
Zum Problem: Ich bin mir ziemlich sicher dass es am GC liegt oder irgendwie daran wie mein Buffer oder was weiß ich was mit den variablen umgeht :D wenn ich die zeile:
Code:
player.setCycleCount(MediaPlayer.INDEFINITE);
einfüge wird mir der Song abgespielt. Total komisch und ärgerlich.
05/26/2018 02:44 dowhile#4
Mach player doch mal zu einem Attribut, dann wird es vom Garbage Collector garantiert nicht gelöscht.
05/26/2018 12:05 .BritainAndy#5
Ich habe den player bereits als Klassenvariable definitert , daduch höre ich ca ne viertel Sekunde Sound. also schon mal ne viertel Sekunde mehr aber immer noch nicht das gelbe vom Ei.

~.~

Ps: Ich laufe auf High Sierra 10.13.4 und java 9.0.4. Wie sieht das bei euch aus?
pps: wenn ich setCycleCount(2) mache, wird der Song einmal abgspielt wie gewünscht. Aber dann funktionieren meine next,play und pause methoden nicht mehr wirklich . Die sind dann irgendwie total verbuggt
06/03/2018 17:56 .BritainAndy#6
Ich konnte das Problem nun lösen, indem ich ein
Code:
player.stop();
vor
Code:
player.start();
gesetzt habe.

¯\_(ツ)_/¯

Lg