首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使JavaFX应用程序在使用JavaFX的胶子“入门”页面之后工作

无法使JavaFX应用程序在使用JavaFX的胶子“入门”页面之后工作
EN

Stack Overflow用户
提问于 2020-03-05 14:36:47
回答 1查看 229关注 0票数 0

基础:

按照https://openjfx.io/页面学习JavaFX。该代码在另一台计算机上工作。我用git上传了一个回购软件。下载到另一台电脑。旧计算机运行的是Java10.JDK 10,它内置了JavaFX (这也是我最初选择它的原因)。我认为我应该跟上最新的趋势(或者,当我谈到Java的时候,我看到了它的混乱)。所以我在另一台电脑上下载了OpenJDK 13。下载的OpenFX 13以及上面提到的页面。他们警告我可能会出现这样的错误:

代码语言:javascript
复制
Error: JavaFX runtime components are missing, and are required to run this application

所以我跟着“解决方案”走了。现在,当我按run键时,我不仅会得到一个奇怪的对话框,其外观如下:

但是,当我选择"ThaApp“时,我得到了另一个我无法理解的例外:

代码语言:javascript
复制
    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?甚至是那个奇怪的对话框?

但主要问题是。如何使代码工作?欢迎任何想法!

EN

回答 1

Stack Overflow用户

发布于 2020-03-05 15:06:33

经常发生的事。一旦我把我的问题写成文字,就会有东西发出咔嚓声。最后找到了解决办法,多亏了这个答案

https://stackoverflow.com/a/53237667/7989121

显然,需要在运行配置中将javax.media添加到这一行中,如下所示:

代码语言:javascript
复制
--module-path /path/to/javafx-sdk-13/lib --add-modules javafx.controls,javafx.fxml,javax.media

本来要删除这个问题,但是如果有人有同样的问题并找到这个页面,他们可能会从中受益。如果Stackoverflow的高级领主认为它是不可缺少的,或者是拥有删除权限的人,那么一定要这样做:)因为它只是运行配置,所以我敢打赌,一旦我想把它变成一个可运行的jar,就会出现问题。所以..。将带着更多的问题回来;)和平出去!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60547771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档