gpt4 book ai didi

java - 无法使用 JavaFX 使 JavaFX 应用程序在 Gluons "Getting started"页面之后工作

转载 作者:行者123 更新时间:2023-12-01 18:06:38 26 4
gpt4 key购买 nike

依据:

已关注https://openjfx.io/页面学习 JavaFX。该代码可以在另一台计算机上运行。我使用 git 上传到存储库。下载到另一台电脑上。旧计算机运行的是 Java 10。JDK 10。其中内置了 JavaFX(也是我最初选择它的原因)。我认为我应该跟上最新的趋势(或者是我在 Java 方面看到的困惑局面)。所以我在另一台计算机上下载了OpenJDK 13。按照上述页面,也下载了 OpenFX 13。我确实收到了他们警告可能会出现的错误:

Error: JavaFX runtime components are missing, and are required to run this application

所以我遵循了“解决方案”。现在,当我按运行时,我不仅会看到一个奇怪的对话框,如下所示:

enter image description here

但是当我选择“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 jar,因此添加了一个“库”,如上述页面的解决方案中所示,我没有库,而是松散的 jar,但是也没有帮助。

这是一张我认为应该显示所需的所有库的图片:

enter image description here

在遵循本指南时,人们会遇到什么困难吗?人们在尝试让 JavaFX 正常工作时是否容易忘记一些事情?主要是在使用 OpenJDK 并且必须添加库或其他东西时?或者有人了解 Stacktrace 吗?或者甚至是那个奇怪的对话框?

但是主要问题。如何让代码发挥作用?欢迎任何想法!

最佳答案

正如经常发生的那样。一旦我用语言表达了我的问题,事情就会发生。终于找到了解决方案,感谢这个答案

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 中,就会出现问题。所以......会带着更多问题回来;)平安归来!

关于java - 无法使用 JavaFX 使 JavaFX 应用程序在 Gluons "Getting started"页面之后工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60547771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com