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

JavaFX标签导致异常[重复]

戴瑞
2023-03-14

我正在尝试向JavaFX应用程序添加一个标签,然而,每当我尝试制作标签时,都会得到一个错误。如果没有label label=new label(“label”);行,我不会出现任何错误,程序按预期工作。我能做些什么来解决这个问题吗?

我刚开始使用JavaFX,所以我知道的不多。

import javafx.application.Application;
import javafx.scene.layout.FlowPane;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.Label;

public class Main extends Application {

public static void main(String[] args){
    launch(args);
}

public void start(Stage stage){
    stage.setTitle("Label");

    FlowPane rootNode = new FlowPane();

    Scene scene = new Scene(rootNode, 300, 300);

    stage.setScene(scene);

    //Whenever I add this line to the code I start getting errors.
    Label label = new Label("This is a JavFX Application");
    //rootNode.getChildren().add(label);

    stage.show();
}
}

错误:

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:566)
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:566)
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:834)
Caused by: java.lang.IllegalAccessError: superclass access check failed: class com.sun.javafx.scene.control.ControlHelper (in unnamed module @0x406f1e78) 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 @0x406f1e78
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:802)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:700)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at javafx.scene.control.Control.<clinit>(Control.java:86)
at 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(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)
Exception running application Main

共有1个答案

吕向荣
2023-03-14

你的代码没有问题!正如您所说的您现在开始,我想您应该已经安装了最新版本的Java:version 11。

如果我没搞错的话,直到Java版本10之前,JavaFX都包含在JDK中。但由于Oracle在其发布策略中所做的更改以及其他原因,JavaFX是单独提供的。则必须在计算机上安装或启用JavaFX。

在这里,您可以看到如何安装OpenFX以及如何在您的项目中启用它:OpenFX

希望这能帮到你!拥抱一下!

 类似资料:
  • 我正在编写的一个程序出现了以下问题,我在互联网上搜索了一下,但我真的找不到任何东西来帮助我理解以下问题 因此,在另一个类中,我编写了一个方法,只要单击搜索按钮,该方法就执行如下所示: 然后SearchController类看起来如下所示(我在这里简化了它): 有人能告诉我为什么可以在initialize方法上写文本吗(该方法在行...那么,如果我尝试在该行之后的标签上写,为什么它不起作用?) 提前

  • 我有代码: 这是我的项目结构:https://imgur.com/a/5ipF1 这是我的错误消息: 这很奇怪,因为在我将Gradle添加到项目之前它就起作用了。添加Gradle后,我不得不将“src”备注为“源根”。 此结构是智能为 JavaFX 项目生成的基本结构。 有什么想法吗?

  • (2016.3.15更新) 上周我遇到了一个奇怪的问题,我想和你讨论一下这个问题。 但是,如果我使用sendMessage(SearchHandler.Object...)而不是runOnUiThread,一切都会很顺利!! java: SearchActivity.java: 2)在运行getActivity().runonuithread()之前,首先判断getActivity()==null

  • 我已经在这个项目上工作了一段时间,不知道为什么Media类会导致我的应用程序在JavaFX(NetBeans)上崩溃。 在观看了几篇关于如何使用Media类的教程后,我想到了以下内容: 如果我用Media类注释掉这行代码,那么代码就可以工作,但我想在背景中添加音乐。我知道,在此之后,我必须使用MediaPlayer类,并将媒体对象传递给它,然后调用play()方法,但由于某些原因,当它未被注释掉时

  • 主要内容:创建标签,标签内容,标签字体,包装文本,应用效果,标签鼠标事件,更新标签JavaFX API的包中的类可用于显示一个文本元素。 我们可以包装文本元素以适应特定空间,添加图形图像或使用JavaFX 控件应用视觉效果。 以下代码显示如何使用显示文本。 创建标签 JavaFX API提供了类的三个构造函数来创建标签。 标签内容 创建标签后,我们可以使用类中的以下方法添加文本和图形内容。 - 设置标签的文本标题 - 设置图形图标 方法设置文本和图标之间的间距。方法设置标签文本

  • 问题内容: 根据python文档,自python 2.5开始支持相对导入和内部包引用。我当前正在运行Python 2.7.3。因此,我尝试在自己的程序包中实现此功能,以便将其用于更简单的导入。我很惊讶地发现它引发了SyntaxError异常,我希望有人可以帮助您找到原因。 我设置了一个测试目录进行测试: 两个__init__.py模块都为空。其他模块是: 当我尝试导入second_level模块时