Module error when running JavaFx media application
The error encountered when running the JavaFx application is due to the Java Platform Module System (JPMS), which was introduced in Java 9. This system divides Java code into modules, each with its own set of dependencies and permissions.
The specific error encountered is a "java.lang.IllegalAccessError" indicating that the "com.sun.media.jfxmediaimpl.NativeMediaManager" class (part of the unnamed module) cannot access the "com.sun.glass.utils.NativeLibLoader" class (in the javafx.graphics module) because the javafx.graphics module does not export the com.sun.glass.utils package to the unnamed module.
To resolve this error, ensure that the javafx.media module is resolved as a module by using one of the following methods:
Method 1: Include module in --add-modules argument:
--add-modules javafx.controls,javafx.media
Method 2: Make code modular and use --module argument:
Create a module-info descriptor for your code (e.g., module-info.java):
module app { requires javafx.controls; requires javafx.media; exports com.example.app to javafx.graphics; // Replace with your application class's package }
Launch the application with the --module argument:
java --module app
Method 3: Use a JDK that includes JavaFX (not recommended):
Install a JDK that includes JavaFX (e.g., OpenJDK with OpenJFX).
The above is the detailed content of Why Does My JavaFX Media Application Throw a Module Error, and How Can I Fix It?. For more information, please follow other related articles on the PHP Chinese website!