当前位置: 首页 > 知识库问答 >
问题:

我正在制作一个简单的JavaFx程序,只需要一个按钮,就可以看到错误[duplicate]

许永年
2023-03-14

请帮帮我.如果有人能回答我,我会很感激的。

这是我看到的错误:

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:564)
    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:564)
    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:832)
Caused by: java.lang.IllegalAccessError: superclass access check failed: class com.sun.javafx.scene.control.ControlHelper (in unnamed module @0xb49eb09) cannot access class com.sun.javafx.scene.layout.RegionHelper (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.scene.layout to unnamed module @0xb49eb09
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at javafx.scene.control.Control.<clinit>(Control.java:86)
    at com.Thomas.Main.start(Main.java:23)
    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

请帮帮我.

共有1个答案

苏淇
2023-03-14

您是如何运行应用程序的?

该错误表示您正在Modulepath上运行应用程序,但没有正确设置(JPMS)模块设置。

这里的一个线索是它说的是“com.sun.javafx.scene.control.ControlHelper(在未命名模块@0xB49EB09)”。如果您正确地运行它,将每个JAR放在Modulepath上,那么该包不应该在未命名模块中,而应该在自动模块中(名称:javafx.controls)。

因此,第一步是将所有JavaFX JAR添加到ModulePath。接下来是创建一个module-info.java文件,使您自己的代码模块化。这里有一个示例项目:https://github.com/tomcools/jpms-hexagonal-architecture/blob/master/app-desktop-javafx/src/main/java/module-info.java

这确实需要一些关于JPMS工作方式的知识。如果你赶时间的话,下面的替代选项可能会更好。

或者。只需将所有内容(jar/class文件)放入类路径中,就可以绕过Java模块的所有内容。这样做不会激活模块系统,你不应该再有那个错误了。

 类似资料:
  • 问题内容: 我真的是使用Android的新手,所以让我感到困惑。我看了看似100篇教程以及有关如何从Android上的Web服务获取信息的示例,但是我需要的是对一个毫无头绪的人所需要的东西。以下是我没有得到的特别几点: 我不知道该如何处理XML文件。.意思是,一旦我完成Java工作,就是所有要做的事情吗?还是需要在XML文件中进行任何更改? 似乎我应该为其中一些教程创建一个新类,但是我不确定,如果

  • 我多次尝试让developers.android(https://developer.android.com/training/basics/firstapp/index.html)上的MyFirstApp教程中的应用程序发挥作用。我正在Nexus4设备上测试我的代码,该设备装有Android 4.4.2 AndroidManifest.xml: MainActivity.java Display

  • 首先,我试图遵循这一指南。 到目前为止,我已经启动并运行了主机,但我在这一点上卡住了。我已经安装了windowsservercore映像,并且安装了IIS映像并将其标记为“WindowsServerIIS”。现在我需要安装ASP.NET4.5,我使用以下命令 docker Build-T windowsserveriisaspnet。 我也许应该添加我为我的Docker图像创建一个文件夹。所以我有

  • 问题内容: 这是由于尝试使我的html语义尽可能正确而导致的问题。 我有一个父按钮,它在同一页面中既起作用,又充当嵌套锚的大容器的父标签(重定向到另一个页面),而div标签又充当另一个按钮的父标签应该执行一些动作。 我尝试嵌套按钮,为它提供了一个类和ID,但我没有应用到该类的任何属性,并且对子按钮也没有执行ID,更多情况下,子按钮也完全脱离了大容器并放置在DOM就像它是一个完全独立的标记,没有其他

  • 如果我按下呼叫按钮,我会得到一个错误,即出租车没有呼叫,而是转到另一个窗口。 我认为这个错误来自实时数据库。如果你有不同的意见,写下你的答案。 错误:E/AndroidRuntime:致命异常:主进程:com。实例乌兹别克斯坦,PID:8915爪哇。lang.NullPointerException:尝试调用虚拟方法“double android”。地方地方getLatitude()'位于com上

  • 这似乎是件很简单的事情,但我在任何地方都找不到。我想要一个简单的程序(比如自动热键,但我找不到使用自动热键的方法),当我按下某个键时,它会冻结我的键盘和鼠标(无论我当时按什么键,即使我释放了实际的键/按钮),并将其冻结,直到我再次按下该键(选择的键从未被其他程序视为按下)。 我只是希望这样,如果游戏希望我按住一些按钮,我可以按下按钮,按下指定的键,松手,然后在我应该松开按钮的时候再次按下键。