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

JavaFX文本字段导致编译错误

刁星渊
2023-03-14

我已经开始为一个个人项目学习JavaFX,事情进展顺利,直到我遇到了创建一组文本字段的问题。据我所知,代码是正确的,我使用的IDE没有给出任何错误指示。但当我尝试运行程序时,它会抛出一长串错误,这些错误在我注释创建文本字段的代码时不会发生。当这些代码行被省略时,程序将完全按照它应该的方式运行。

我正在使用InteliJ Idea,Windows 10,Javafx SDK 14.0.1和Java JDK 14.0.1

我在下面包含了我正在使用的代码。这个程序非常简单,所以我把它全部包括进来,以防我之前忽略了一些东西。

package library.test;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.shape.*;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class main extends Application {

@Override
public void start(Stage primaryStage) {

    // Create the grid plane
    GridPane pane =new GridPane();
    pane.setHgap(10);
    pane.setVgap(6);
    pane.setAlignment(Pos.TOP_CENTER);

    // Create the scene
    Scene scene=new Scene(pane,500,500);
    primaryStage.setScene(scene);
    primaryStage.setTitle("Book Catalog");
    primaryStage.show();

    // Create the elements for the table
    Text tTitle = new Text("Title");
    Text tAuthor = new Text("Author");
    Text tGenre = new Text("Genre");
    Text tFormat = new Text("Format");
    Text tISBN = new Text("ISBN");

    TextField fTitle=new TextField();
    TextField fAuthor=new TextField();
    TextField fGenre=new TextField();
    TextField fFormat=new TextField();
    TextField fISBN =new TextField();

    // Add the elements of the scene
    pane.add(tTitle,1,1);
    pane.add(tAuthor,3,1);
    pane.add(tGenre,5,1);
    pane.add(tFormat,7,1);
    pane.add(tISBN,8,1);

    pane.add(fTitle,2,3);

}

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

我对编程这方面非常陌生,所以如果我错过了一些明显的东西,我道歉。提前谢谢!

添加

包括堆栈跟踪

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: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x25c44106) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x25c44106
    at com.sun.javafx.fxml.FXMLLoaderHelper.<clinit>(FXMLLoaderHelper.java:38)
    at javafx.fxml.FXMLLoader.<clinit>(FXMLLoader.java:2056)
    at sample.Main.start(Main.java:13)
    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 sample.Main

共有1个答案

梁兴文
2023-03-14

多亏了@Slaw的帮助,我才得以解决这个问题。在文章JavaFX 11: IllegalAccessError当创建标签时,表明这只是一个VM选项问题。一旦我输入了前面提到的链接中显示的适当的路径选项和参数,我的代码就完全按照预期工作了。

再次感谢@Slaw的帮助!抱歉这么久才回复。我真的以为我已经做了。

 类似资料:
  • 我试图创建一个中间有几个选项卡的基本窗口,第一个选项卡包含一个表。 每次我运行主Java类时,它都会给我错误,甚至当我删除table和tab时也是如此。 下面是我的主要文件: 下面是我的fxml文件: 任何事都有帮助。我在这上面找不到任何东西,但可能是我的FXMLLoader.Load文件源吗?我真的不知道。 下面是我的错误代码: 安装gluon Mobile后出现新错误:

  • 学生班 FXML文件

  • 问题内容: 对于这两个进口; 我收到此错误: 如何解决此错误? 问题答案: 该错误是由您的Eclipse配置引起的。您可以将其减少为警告。更好的是,使用不属于非公共API的Base64编码器。Apache Commons有一个,或者当您已经使用Java 1.8时,请使用。

  • 问题内容: 由于某些原因,我的fx:id无法正确绑定到我的类,因此始终会导致错误。 控制者 XML文件 我认为我了解问题的根源,但不了解如何正确解决。根据这个问题的答案,我认为我正在尝试在调用构造函数之前分配FXML元素(并且这些元素只能在初始化期间/之后分配)。 有没有办法 不 执行此操作?还是我犯了一个完全不同的错误? 问题答案: 您使用进口 在您的fxml文件中。 因此,在加载fxml文件时

  • 我想我明白我的问题的根源,但我不明白如何正确地解决它。根据这个问题的答案,我认为我试图在调用构造函数之前分配FXML元素(这些元素只能在初始化期间/之后分配)。 有没有一种方法可以在不实现的情况下做到这一点?还是我犯了一个完全不同的错误?

  • 我在编译顺序时遇到编译器错误。java文件,即使它包含另一个打包类的导入语句。我不完全确定为什么会发生这种情况,但这是一个目录树,其中包含一些文件: > com/my/domain/Order.java 这个文件里面有下面的包和导入: com/my/utils/MyDate。此文件中包含以下包和导入: 编译顺序时出现编译器错误。java: 我仍然不知道如何解决这个问题后,试图从评论。这里有一些更多