运行JavaFx媒体应用程序时出现模块错误
当我使用以下命令运行
JavaFX 11应用程序时:
/usr/lib/jvm/java-11-openjdk-amd64/bin/java -p ~/.m2/repository/org/openjfx/javafx-swing/11/javafx-swing-11.jar: ~/.m2/repository/org/openjfx/javafx-swing/11/javafx-swing-11-linux.jar: ~/.m2/repository/org/openjfx/javafx-graphics/11/javafx-graphics-11.jar: ~/.m2/repository/org/openjfx/javafx-graphics/11/javafx-graphics-11-linux.jar: ~/.m2/repository/org/openjfx/javafx-base/11/javafx-base-11.jar: ~/.m2/repository/org/openjfx/javafx-base/11/javafx-base-11-linux.jar: ~/.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11.jar: ~/.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-linux.jar: ~/.m2/repository/org/openjfx/javafx-media/11/javafx-media-11.jar: ~/.m2/repository/org/openjfx/javafx-media/11/javafx-media-11-linux.jar --add-modules javafx.controls,javafx.graphics -classpath ~/development/intellij/OpenPatrician/OpenPatricianStandalone/target/classes: ~/.OpenPatrician/plugins/maps/MinimalMap-Plugin.jar: ~/development/intellij/OpenPatrician/OpenPatricianDisplay/target/classes: ~/.m2/repository/ch/sahits/sahitsUtil/1.2.4/sahitsUtil-1.2.4.jar: ~/.m2/repository/junit/junit/4.12/junit-4.12.jar: ~/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar: ~/.m2/repository/org/springframework/boot/spring-boot-starter-log4j2/2.1.0.RELEASE/spring-boot-starter-log4j2-2.1.0.RELEASE.jar: ~/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.11.1/log4j-slf4j-impl-2.11.1.jar: ~/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar: ~/.m2/repository/org/apache/logging/log4j/log4j-api/2.11.1/log4j-api-2.11.1.jar: ~/.m2/repository/org/apache/logging/log4j/log4j-core/2.11.1/log4j-core-2.11.1.jar: ~/.m2/repository/org/apache/logging/log4j/log4j-jul/2.11.1/log4j-jul-2.11.1.jar: ~/.m2/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar: ~/.m2/repository/commons-cli/commons-cli/1.4/commons-cli-1.4.jar: ~/development/intellij/OpenPatrician/OpenPatricianImage/target/classes: ~/development/intellij/OpenPatrician/OpenPatricianModel/target/classes: ~/development/intellij/OpenPatrician/GameEvent/target/classes: ~/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.jar: ~/.m2/repository/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.jar: ~/.m2/repository/com/sun/istack/istack-commons-runtime/3.0.7/istack-commons-runtime-3.0.7.jar: ~/.m2/repository/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.jar: ~/.m2/repository/com/sun/xml/fastinfoset/FastInfoset/1.2.15/FastInfoset-1.2.15.jar: ~/.m2/repository/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar: ~/.m2/repository/org/openjfx/javafx-swing/11/javafx-swing-11.jar: ~/.m2/repository/org/openjfx/javafx-swing/11/javafx-swing-11-linux.jar: ~/.m2/repository/org/openjfx/javafx-graphics/11/javafx-graphics-11.jar: ~/.m2/repository/org/openjfx/javafx-graphics/11/javafx-graphics-11-linux.jar: ~/.m2/repository/org/openjfx/javafx-base/11/javafx-base-11.jar: ~/.m2/repository/org/openjfx/javafx-base/11/javafx-base-11-linux.jar: ~/development/intellij/OpenPatrician/OpenPatricianSound/target/classes: ~/development/intellij/OpenPatrician/OpenPatricianUtilities/target/classes: ~/.m2/repository/org/springframework/spring-beans/5.1.2.RELEASE/spring-beans-5.1.2.RELEASE.jar: ~/.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11.jar: ~/.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-linux.jar: ~/.m2/repository/commons-io/commons-io/2.6/commons-io-2.6.jar: ~/.m2/repository/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10.jar: ~/.m2/repository/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar: ~/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar: ~/.m2/repository/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar: ~/.m2/repository/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar: ~/.m2/repository/org/openjfx/javafx-media/11/javafx-media-11.jar: ~/.m2/repository/org/openjfx/javafx-media/11/javafx-media-11-linux.jar: ~/.m2/repository/org/springframework/spring-context/5.1.2.RELEASE/spring-context-5.1.2.RELEASE.jar: ~/.m2/repository/org/springframework/spring-aop/5.1.2.RELEASE/spring-aop-5.1.2.RELEASE.jar: ~/.m2/repository/org/springframework/spring-expression/5.1.2.RELEASE/spring-expression-5.1.2.RELEASE.jar: ~/.m2/repository/org/springframework/spring-oxm/5.1.2.RELEASE/spring-oxm-5.1.2.RELEASE.jar: ~/.m2/repository/com/google/guava/guava/24.1-jre/guava-24.1-jre.jar: ~/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar: ~/.m2/repository/org/checkerframework/checker-compat-qual/2.0.0/checker-compat-qual-2.0.0.jar: ~/.m2/repository/com/google/errorprone/error_prone_annotations/2.1.3/error_prone_annotations-2.1.3.jar: ~/.m2/repository/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar: ~/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar: ~/development/intellij/OpenPatrician/OpenPatricianJavaFX/target/classes: ~/development/intellij/OpenPatrician/OpenPatricianGameEvent/target/classes: ~/development/intellij/OpenPatrician/OpenPatricianClientServerInterface/target/classes: ~/.m2/repository/org/springframework/boot/spring-boot-starter-aop/2.1.0.RELEASE/spring-boot-starter-aop-2.1.0.RELEASE.jar: ~/.m2/repository/org/springframework/boot/spring-boot-starter/2.1.0.RELEASE/spring-boot-starter-2.1.0.RELEASE.jar: ~/.m2/repository/org/yaml/snakeyaml/1.23/snakeyaml-1.23.jar: ~/.m2/repository/org/aspectj/aspectjweaver/1.9.2/aspectjweaver-1.9.2.jar: ~/development/intellij/OpenPatrician/OpenPatricianServer/target/classes: ~/development/intellij/OpenPatrician/OpenPatricianEngine/target/classes: ~/.m2/repository/com/carrotsearch/hppc/0.7.2/hppc-0.7.2.jar: ~/.m2/repository/org/springframework/spring-core/5.1.2.RELEASE/spring-core-5.1.2.RELEASE.jar: ~/.m2/repository/org/springframework/spring-jcl/5.1.2.RELEASE/spring-jcl-5.1.2.RELEASE.jar: ~/.m2/repository/org/reflections/reflections/0.9.11/reflections-0.9.11.jar: ~/.m2/repository/org/javassist/javassist/3.21.0-GA/javassist-3.21.0-GA.jar: ~/development/intellij/OpenPatrician/OpenPatricianData/target/classes: ~/.m2/repository/org/projectlombok/lombok/1.18.2/lombok-1.18.2.jar: ~/.m2/repository/org/springframework/boot/spring-boot-devtools/2.1.0.RELEASE/spring-boot-devtools-2.1.0.RELEASE.jar: ~/.m2/repository/org/springframework/boot/spring-boot/2.1.0.RELEASE/spring-boot-2.1.0.RELEASE.jar: ~/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/2.1.0.RELEASE/spring-boot-autoconfigure-2.1.0.RELEASE.jar ch.sahits.game.openpatrician.standalone.OpenPatricianApplication 我遇到这个错误: Exception in thread "JavaFX Application Thread" java.lang.IllegalAccessError: class com.sun.media.jfxmediaimpl.NativeMediaManager (in unnamed module @0x4d7be377) 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 @0x4d7be377 at com.sun.media.jfxmediaimpl.NativeMediaManager.lambda$new$0(NativeMediaManager.java:136) at java.base/java.security.AccessController.doPrivileged(Native Method) at com.sun.media.jfxmediaimpl.NativeMediaManager.<init>(NativeMediaManager.java:107) 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:239) at com.sun.media.jfxmediaimpl.NativeMediaAudioClip.<init>(NativeMediaAudioClip.java:53) at com.sun.media.jfxmediaimpl.NativeMediaAudioClip.load(NativeMediaAudioClip.java:63) at com.sun.media.jfxmediaimpl.AudioClipProvider.load(AudioClipProvider.java:66) at com.sun.media.jfxmedia.AudioClip.load(AudioClip.java:135) at javafx.scene.media.AudioClip.<init>(AudioClip.java:83) at ch.sahits.game.openpatrician.sound.impl.LoopTrack.lambda$new$0(LoopTrack.java:26) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:277) at java.base/java.lang.Thread.run(Thread.java:834) 据我所知,这个例外我的模块设置有问题,但我不清楚我需要改变什么: >将附加模块添加到–add-modules中,哪些? 解决方法
JavaFX 11分为
seven modules.在命令行中,您有:
--add-modules javafx.controls,javafx.graphics 而你得到的错误是: java.lang.IllegalAccessError: class com.sun.media.jfxmediaimpl.NativeMediaManager (in unnamed module @0x4d7be377) 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 @0x4d7be377 它告诉你com.sun.media.jfxmediaimpl包中的一个类在未命名的模块中,并试图访问javafx.graphics模块的内部成员.包的名称表示它属于javafx.media模块.但是,该错误表明您正在使用类路径中的javafx.media模块.您需要在–add-modules命令中包含javafx.media以在模块路径中使用它: --add-modules javafx.controls,javafx.graphics,javafx.media 这是由于javafx.graphics的module-info文件.它具有合格的导出和/或打开指令,允许javafx.media访问这些内部包.但是,如果涉及的所有内容都在模块路径上,则模块系统只能考虑这些指令. 在相关的说明中,您不需要在命令中包含javafx.graphics,因为您已经添加了javafx.controls. javafx.controls和javafx.media都需要javafx.graphics和javafx.base模块,因此会将它们拉入. 何时或如果您使代码模块化,您将不必处理–add-modules.您只需要声明相应的requires指令: module example { requires javafx.controls; // transitively requires javafx.base and javafx.graphics requires javafx.media; // transitively requires javafx.base and javafx.graphics // ... other directives ... /* * Don't forget to "exports" the package containing your Application * class to at least the javafx.graphics module. */ } 然后你必须确保所有模块,包括你的模块都在–module-path(或-p)上.您的模块将引入必要的依赖项. java -p <other-modules>;<javafx-modules>;<your-module> -m <your-module>/<main-class> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |