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

应用程序启动方法中出现异常。JavaFx 11

公西星海
2023-03-14

我尝试创建一个包含一个文本字段和按钮的屏幕,并重复“应用程序启动方法中的异常”。第一次我试着从这个问题中解题,但没有奏效:

应用程序启动方法中出现异常

应用程序启动方法javafx gui中出现异常

我使用Java11、JavaFX11。对于javaFx,我使用Maven。

主要的类别是:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class StartClass extends Application{
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception  {
        Parent parent =     FXMLLoader.load(getClass().getResource("../userInterface/CreateProjectScreen.fxml"));
        stage.setTitle("IEPCP");
        stage.setScene(new Scene(parent ));
        stage.show();
    }

}

FXML文件为:

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane prefHeight="400.0" prefWidth="600.0"     xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"     fx:controller="controllers.ui.CreateProjectController">
   <children>
      <AnchorPane prefHeight="402.0" prefWidth="601.0">
         <children>
            <Button fx:id="sendButton" layoutX="249.0" layoutY="310.0" mnemonicParsing="false" onAction="#sendButtonClicked" text="Button" />
            <TextField fx:id="directory" layoutX="66.0" layoutY="85.0" prefHeight="25.0" prefWidth="470.0" />
         </children>
      </AnchorPane>
   </children>
</AnchorPane>
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;

public class CreateProjectController {

    @FXML
    private TextField directory;

    @FXML
    private Button sendButton;

    public TextField getDirectory() {
        return directory;
    }

    public void setDirectory(TextField directory) {
        this.directory = directory;
    }

    public void sendButtonClicked(ActionEvent actionEvent){
        System.out.println("You write: " + getDirectory().getText());
    }
}
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: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x3e122bd1) 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 @0x3e122bd1
    at com.sun.javafx.fxml.FXMLLoaderHelper.<clinit>(FXMLLoaderHelper.java:38)
    at javafx.fxml.FXMLLoader.<clinit>(FXMLLoader.java:2056)
    at primary.StartClass.start(StartClass.java:17)
    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)
    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 primary.StartClass
<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11</version>
    </dependency>
</dependencies>

共有1个答案

宓昂雄
2023-03-14

问题与提供给fxmlloader的路径有关。如果您的FXML文件位于src/main/resources/userinterface/createprojectscreen.FXML中,则应按以下方式调用您的fxmlloader

Parent parent =     FXMLLoader.load(getClass().getResource("/userInterface/CreateProjectScreen.fxml"));

前导斜杠表示类路径的根(即src/main/resources)。后面的路径是FXML文件的相对路径。

您还会遇到模块访问错误。您需要导出错误消息中列出的模块,否则JavaFX将无法访问它。

 类似资料:
  • 我的主 LoginController.java 请注意,我还没有在userController.java中编写任何代码,我只是为user.fxml编写了ui 在javafx.fxml.fxmlloader.constructloadexception(fxmlloader.java:2597)在javafx.fxml.fxmlloader.access$100(fxmlloader.java:1

  • 我刚刚开始使用JavaFX,我试图构建一个简单的应用程序,其中包含标签、文本字段和按钮,当单击这些按钮时,将标签的值设置为文本字段的值。在我把控制器连接到主文件之前,一切都很顺利。这是我的代码: 我尝试了在StackOverflow上找到的多个答案,但我找到的都是2年前的答案,对我的代码没有任何积极的影响。 编辑:在此处堆栈跟踪:

  • 乍一看,这个问题似乎是重复的。我已经在谷歌搜索了一些,但不幸的是,没有一个结果不符合我。我给出了下面的问题链接。 应用程序启动方法java.lang.Reflect.InvocationTargetException JavaFX图像转换中出现异常 JavaFX-应用程序启动方法中的异常? 应用程序启动方法中出现异常 堆栈跟踪: 无法从此StackTrace跟踪错误。然后我在start方法中使用了

  • 我正在尝试使用intelliJ IDEA创建我的第一个JavaFX程序 我得到这个错误: 这是我的FXML文件: main.java: 这是项目结构: 项目结构 我甚至更改了fxml文件的位置,但他不断得到相同的错误。 FXML文件和Main.java在同一个包中 我是Ubuntu

  • 错误: primary.fxml: primaryController.java: secondaryController.java: JAR-TF义务1.jar: 我想这可能与FXML加载器中的链接有关,我也见过其他人有类似的问题(比如这个问题),但我的目录中有资源文件夹不像他们的。感谢任何帮助,谢谢。

  • 我试图创建一个应用程序,但我一直遇到相同的运行时异常。我已经和它斗争了好几天,我不知道如何修复它。任何建议都将不胜感激!这是我在Java中的第一个相当长的项目,所以我决心解决它;只是有相当多的麻烦,我不知道如何克服这一点。