problem z odtworzeniem pliku Audio w JavaFX

problem z odtworzeniem pliku Audio w JavaFX
AlexTen
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:6
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

Kopiuj
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:

Kopiuj
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

99xmarcin
Trochę overkill ale popatrz tutaj masz szablon nowej apki JavaFX na Mavenie: https://github.com/marcin-chwedczuk/javafx-template. U ciebie jest zamieszanie z modułami JPMS, zacznij od szukania pod hasłem module-info i JPMS.
MrMadMatt
  • Rejestracja:ponad 9 lat
  • Ostatnio:2 dni
  • Postów:373
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.
AlexTen
@MrMadMatt: ooooo czyli ta struktura projektu która tworzyła mi się domyślnie a z którą tak walczyłem to struktura mavenowska, dzięki za info, próbuję już to zrobić
S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
3

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


AlexTen
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:6
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.