簡體   English   中英

我在我的 JavaFX 程序上不斷收到這些錯誤:InvocationTargetException、RuntimeException、NullPointerException

[英]I keep getting these errors on my JavaFX program: InvocationTargetException, RuntimeException, NullPointerException

每當我嘗試編譯我的程序時,我都會不斷收到這些錯誤:

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(La uncherImpl.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 ) 引起:javafx.fxml.LoadException: /C:/Users/james/Desktop/Spring%20Semester%202020/INFO%202413/CarRental/out/production/CarRental/carRental/address/view/LoginPage.fxml:32

at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2603) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl (FXMLLoader.java:2466) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194) at javafx.fxml/ javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.Z93F725A074 23FE1C889F448B33D21F46Z:3113) at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106) at carRental.address.Main.start(Main.java:24) 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 更多原因: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at javafx.fxml/com.sun.javafx.fxml.BeanAdapter.put(BeanAdapter.java:262) at javafx.fxml/com.sun.javafx.fxml.BeanAdapter .put(BeanAdapter.Z93F725A07423FE1C 889F448B33D21F46Z:54) at javafx.fxml/javafx.fxml.FXMLLoader$Element.applyProperty(FXMLLoader.java:520) at javafx.fxml/javafx.fxml.FXMLLoader$Element.processValue(FXMLLoader.java:370) at javafx.fxml /javafx.fxml.FXMLLoader$Element.processPropertyAttribute(FXMLLoader.java:332) at javafx.fxml/javafx.fxml.FXMLLoader$Element.processInstancePropertyAttributes(FXMLLoader.java:242) at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement .processEndElement(FXMLLoader.java:775) at javafx.fxml/javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2838) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.Z93F725A07423FE1C889F4 48B33D21F46Z:2557)... 17 more Caused by: 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 com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76) at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invok e(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java: 273) at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83) at javafx.fxml/com.sun.javafx.fxml.ModuleHelper.invoke(ModuleHelper.java:98) at javafx .fxml/com.sun.javafx.fxml.BeanAdapter.put(BeanAdapter.java:258)... 25 more Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make javafx.ZC7A628CBA2 2E28EB17B5F5C6AE2A266AZ.ParsedValue javafx.css.CssParser.parseExpr(java.lang.String,java.lang.String) accessible: module javafx.graphics does not "opens javafx.css" to unnamed module @26123535 at java.base/java.lang .reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:349) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:289) at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method .java:196) at java.base/java.lang.reflect.Method.setAccessible(Method.java:190) at de.jensd.fx.glyphs.GlyphIcon.convert(GlyphIcon.Z93F725A07423FE1C889F448B33D21F4 6Z:248) 在 de.jensd.fx.glyphs.GlyphIcon.setSize(GlyphIcon.java:144)... 還有 37 個異常運行應用程序 carRental.address.Main

我看到了一篇關於這個問題的類似帖子,我按照他們所說的將有助於解決這個問題。 但是,他們提供的解決方案並沒有解決我的問題。 我還設置了我的虛擬機來補充我對這個項目的需求。 Since I am not using Maven, I set up my VM to this "--module-path C:\openjfx-11.0.2_windows-x64_bin-sdk\javafx-sdk-11.0.2\lib --add-modules javafx.controls ,javafx.fxml”。

我的代碼:

package carRental.address;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.event.EventHandler;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.fxml.FXMLLoader;
import javafx.scene.input.MouseEvent;
import javafx.stage.StageStyle;

public class Main extends Application {

    private double xOffSet = 0;
    private double yOffSet = 0;

    public static void main(String[] args) {

        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("view/LoginPage.fxml"));

        Scene scene = new Scene(root);

        primaryStage.initStyle(StageStyle.UNDECORATED);

        root.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                xOffSet = mouseEvent.getSceneX();
                yOffSet = mouseEvent.getSceneY();
            }
        });

        root.setOnMouseDragged(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                primaryStage.setX(mouseEvent.getSceneX() - xOffSet);
                primaryStage.setY(mouseEvent.getSceneY() - yOffSet);
            }
        });
        
    }
}

我的 FXML 文件: FXML 文件

controller: Controller 文件

現在,我不太確定如何解決這個問題,因為我是 JavaFX 的新手。 如果有人能指出我的錯誤在哪里,那就太好了!

這是堆棧跟蹤的相關部分。

java.lang.NullPointerException: Location is required. at
carRental.address.Main.start(Main.java:24)

我猜以下行是文件Main.java中的第 24 行

Parent root = FXMLLoader.load(getClass().getResource("src/carRental/address/view/LoginPage.fxml"));

路徑不對。 It has to be relative to the location of the compiled java class, ie file Main.class (and not Main.java ).

您的 IDE 將 FXML 從src文件夾復制到 output 文件夾(我猜它被命名為bin )。

嘗試將上面的 [java] 代碼行更改為以下內容:

Parent root = FXMLLoader.load(getClass().getResource("view/LoginPage.fxml"));

編輯

您已經編輯了您的問題並實施了我建議的更改,這已經解決了您最初的問題。

您的新問題是您的LoginPage.fxml文件指示 JavaFX 版本,即 15.0.1

請注意,這不是必需的。 您可以放心地省略該部分。 換句話說,刪除以下內容:

xmlns="http://javafx.com/javafx/15.0.1"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM