基础:
按照https://openjfx.io/页面学习JavaFX。该代码在另一台计算机上工作。我用git上传了一个回购软件。下载到另一台电脑。旧计算机运行的是Java10.JDK 10,它内置了JavaFX (这也是我最初选择它的原因)。我认为我应该跟上最新的趋势(或者,当我谈到Java的时候,我看到了它的混乱)。所以我在另一台电脑上下载了OpenJDK 13。下载的OpenFX 13以及上面提到的页面。他们警告我可能会出现这样的错误:
Error: JavaFX runtime components are missing, and are required to run this application所以我跟着“解决方案”走了。现在,当我按run键时,我不仅会得到一个奇怪的对话框,其外观如下:

但是,当我选择"ThaApp“时,我得到了另一个我无法理解的例外:
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:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:830)
Caused by: java.lang.IllegalAccessError: class com.sun.media.jfxmediaimpl.NativeMediaManager (in unnamed module @0x35c1057f) 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 @0x35c1057f
at com.sun.media.jfxmediaimpl.NativeMediaManager.lambda$new$0(NativeMediaManager.java:110)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:554)
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 javafx.scene.media.Media.<init>(Media.java:393)
at mypack.ThaApp.start(ThaApp.java:32)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
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.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
... 1 more
Exception running application mypack.ThaApp当然,上传到回购程序的代码运行在Java 10上,并且有一堆eclipse吐露。但在eclipse上,在将代码拖到另一台计算机后,我确实将其更改为Java 13。在“运行配置”和"BuildPath“中。我还在“构建路径”中尝试“手动”添加JavaFX jars,因此在添加“库”时,就像在上面提到的页面的解决方案中一样,我没有库,而是松散的jars,但这也没有帮助。
这是一张我认为应该展示所有所需库的图片:

在遵循这个指南的时候,有什么东西被人困住了吗?当人们试图让JavaFX在一般情况下工作时,会忘记一些事情吗?主要是在使用OpenJDK和必须添加库或其他东西时?或者有人理解Stacktrace?甚至是那个奇怪的对话框?
但主要问题是。如何使代码工作?欢迎任何想法!
发布于 2020-03-05 15:06:33
经常发生的事。一旦我把我的问题写成文字,就会有东西发出咔嚓声。最后找到了解决办法,多亏了这个答案
https://stackoverflow.com/a/53237667/7989121
显然,需要在运行配置中将javax.media添加到这一行中,如下所示:
--module-path /path/to/javafx-sdk-13/lib --add-modules javafx.controls,javafx.fxml,javax.media本来要删除这个问题,但是如果有人有同样的问题并找到这个页面,他们可能会从中受益。如果Stackoverflow的高级领主认为它是不可缺少的,或者是拥有删除权限的人,那么一定要这样做:)因为它只是运行配置,所以我敢打赌,一旦我想把它变成一个可运行的jar,就会出现问题。所以..。将带着更多的问题回来;)和平出去!
https://stackoverflow.com/questions/60547771
复制相似问题