problem z odtworzeniem pliku Audio w JavaFX

0

Cześć, mam problem którego w żaden sposób nie mogę przeskoczyć, chce zrobić prostą aplikacje w JavaFX, na głównym ekranie chce żeby po uruchomieniu leciała sobie muzyka, mam kod, który przed kompilacją nie pokazuje żadnego błędu, ale przy próbie kompilacji już wywala błędy, jestem noob, ale mój noobowski nos czuje że problem jest ze ścieżką do pliku... i ttu pojawia się problem bo próbowałem chyba większości opcji i efekt ten sam czyli marny, niby prosta sprawa a pomoc potrzebna, wstawiam kod, błędy które wywala i ss ze strukturą mojego projektu, obecni panuje tam roz.... ponieważ przy testach przestawiałem pare rzecz, jak znajdzie się jakaś tęga głowa która pomoże I MI TO WYTŁUMACZY, to stawiam piwo*

*we Wrocławiu
**nie droższe niż 10 zyla

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.File;
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();

        String musicFile = "resources/test2.mp3";     // For example

        Media sound = new Media(new File(musicFile).toURI().toString());
        MediaPlayer mediaPlayer = new MediaPlayer(sound);
        mediaPlayer.play();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

błędy:

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.IllegalAccessError: class com.sun.media.jfxmediaimpl.NativeMediaManager (in unnamed module @0x534808f6) cannot access class com.sun.glass.utils.NativeLibLoader (in module javafx.graphics) because module javafx.graphics does not export com.sun.glass.utils to unnamed module @0x534808f6
	at com.sun.media.jfxmediaimpl.NativeMediaManager.lambda$new$0(NativeMediaManager.java:111)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
	at com.sun.media.jfxmediaimpl.NativeMediaManager.<init>(NativeMediaManager.java:108)
	at com.sun.media.jfxmediaimpl.NativeMediaManager$NativeMediaManagerInitializer.<clinit>(NativeMediaManager.java:78)
	at com.sun.media.jfxmediaimpl.NativeMediaManager.getDefaultInstance(NativeMediaManager.java:90)
	at com.sun.media.jfxmedia.MediaManager.canPlayProtocol(MediaManager.java:78)
	at com.sun.media.jfxmedia.locator.Locator.<init>(Locator.java:240)
	at javafx.scene.media.Media.<init>(Media.java:393)
	at sample.Main.start(Main.java:30)
	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)

screenshot-20220113000137.png

3

Trochę herezji ode mnie:

  1. Strukturę projektu zrób w oparciu o mavena, znajdziesz poradniki w sieci. Zresztą ktoś Ci to wcześniej zasugerował i nawet linka dał.
  2. Jak to jakiś projekt na studia, ma być po kosztach i nie ma wersji Javy w wymaganiach to najlepiej zacznij od zestawu: Maven + Java 8. W ósemce, FX byl wbudowany i nie ma tam tego problemu co Ty masz: brak jakiś magicznych modułów bibliotek. Na JDK8 powinno żreć bez żadnych kombinacji z zewnętrznymi zależnościami.
3

@AlexTen: https://github.com/asciborek/fxplayer
Tutaj jest kod aplikacji odtwarzacza muzycznego w JavaFX może Ci się przydać ;)

0

dzięki panowie, problem rozwiązany, stworzyłem projekt od nowa w strukturze maven, i poradziłem sobie z linkowaniem tych mediów, ni wiem jak tu zamknąć temat... ale już po problemie, dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1