Avafx fxmloader возвращает NULL, вызывая NullPointerException при загрузке FXMLJAVA

Программисты JAVA общаются здесь
Anonymous
Avafx fxmloader возвращает NULL, вызывая NullPointerException при загрузке FXML

Сообщение Anonymous »

Я работаю над проектом Javafx с использованием Maven, и я пытаюсь загрузить представление FXML в моем контроллере.
Однако, когда я вызову getClass (). getResource ("clientsView.fxml") , он возвращает NOULL , который вызывает nullPointerException в моем методе LoadView Code вот трассировка ошибки: < /p>

Код: Выделить всё

"C:\Program Files\Java\jdk-23\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:50695,suspend=y,server=n -javaagent:C:\Users\dell\AppData\Local\JetBrains\IdeaIC2024.3\captureAgent\debugger-agent.jar -Dkotlinx.coroutines.debug.enable.creation.stack.trace=false -Ddebugger.agent.enable.coroutines=true -Dkotlinx.coroutines.debug.enable.flows.stack.trace=true -Dkotlinx.coroutines.debug.enable.mutable.state.flows.stack.trace=true -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath "C:\Users\dell\.m2\repository\org\openjfx\javafx-controls\23.0.1\javafx-controls-23.0.1.jar;C:\Users\dell\.m2\repository\org\openjfx\javafx-graphics\23.0.1\javafx-graphics-23.0.1.jar;C:\Users\dell\.m2\repository\org\openjfx\javafx-base\23.0.1\javafx-base-23.0.1.jar;C:\Users\dell\.m2\repository\org\openjfx\javafx-fxml\23.0.1\javafx-fxml-23.0.1.jar;C:\Users\dell\.m2\repository\mysql\mysql-connector-java\8.0.30\mysql-connector-java-8.0.30.jar;C:\Users\dell\.m2\repository\com\google\protobuf\protobuf-java\3.19.4\protobuf-java-3.19.4.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 2024.3.5\lib\idea_rt.jar" -p C:\Users\dell\.m2\repository\org\openjfx\javafx-controls\23.0.1\javafx-controls-23.0.1-win.jar;C:\Users\dell\Desktop\Myapp\Myapp\target\classes;C:\Users\dell\.m2\repository\org\openjfx\javafx-fxml\23.0.1\javafx-fxml-23.0.1-win.jar;C:\Users\dell\.m2\repository\org\openjfx\javafx-base\23.0.1\javafx-base-23.0.1-win.jar;C:\Users\dell\.m2\repository\org\kordamp\ikonli\ikonli-materialdesign2-pack\12.4.0\ikonli-materialdesign2-pack-12.4.0.jar;C:\Users\dell\.m2\repository\org\kordamp\ikonli\ikonli-core\12.4.0\ikonli-core-12.4.0.jar;C:\Users\dell\.m2\repository\org\openjfx\javafx-graphics\23.0.1\javafx-graphics-23.0.1-win.jar;C:\Users\dell\.m2\repository\org\kordamp\ikonli\ikonli-fontawesome5-pack\12.4.0\ikonli-fontawesome5-pack-12.4.0.jar;C:\Users\dell\.m2\repository\org\kordamp\ikonli\ikonli-javafx\12.4.0\ikonli-javafx-12.4.0.jar -m com.example.myapp/com.example.myapp.Main
Connected to the target VM, address: '127.0.0.1:50695', transport: 'socket'
Exception in thread "JavaFX Application Thread"  java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml@23.0.1/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1863)
at javafx.fxml@23.0.1/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1731)
at javafx.base@23.0.1/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at javafx.base@23.0.1/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:232)
at javafx.base@23.0.1/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:189)
at javafx.base@23.0.1/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base@23.0.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base@23.0.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@23.0.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base@23.0.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@23.0.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base@23.0.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@23.0.1/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base@23.0.1/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base@23.0.1/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base@23.0.1/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.base@23.0.1/javafx.event.Event.fireEvent(Event.java:199)
at javafx.graphics@23.0.1/javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3691)
at javafx.graphics@23.0.1/javafx.scene.Scene$MouseHandler.process(Scene.java:3996)
at javafx.graphics@23.0.1/javafx.scene.Scene.processMouseEvent(Scene.java:1893)
at javafx.graphics@23.0.1/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2711)
at javafx.graphics@23.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
at javafx.graphics@23.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at javafx.graphics@23.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
at javafx.graphics@23.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:430)
at javafx.graphics@23.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
at javafx.graphics@23.0.1/com.sun.glass.ui.View.handleMouseEvent(View.java:560)
at javafx.graphics@23.0.1/com.sun.glass.ui.View.notifyMouse(View.java:946)
at javafx.graphics@23.0.1/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics@23.0.1/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
at java.base/java.lang.Thread.run(Thread.java:1575)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:115)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:72)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at javafx.base@23.0.1/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:270)
at javafx.fxml@23.0.1/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:84)
at javafx.fxml@23.0.1/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1860)
... 31 more
Caused by: java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:220)
at com.example.myapp/com.example.myapp.DashboardController.loadView(DashboardController.java:40)
at com.example.myapp/com.example.myapp.DashboardController.loadClientsView(DashboardController.java:34)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
...  38 more
< /code>
Вот соответствующий код: < /p>
package com.example.myapp;

import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.SplitPane;
import javafx.scene.layout.AnchorPane;

import java.io.IOException;
import java.util.Objects;

public class DashboardController {

@FXML
private SplitPane splitPane;

@FXML
private AnchorPane anchorPaneRight; // مكان عرض المحتوى

@FXML
public void initialize() {
Platform.runLater(() -> {
splitPane.setDividerPositions(0.15);
splitPane.lookupAll(".split-pane-divider").forEach(div -> {
div.setMouseTransparent(false);
});
});
}

@FXML
private void loadClientsView() {
loadView();
}

// طريقة مساعدة لتحميل FXML داخل الـ AnchorPane
private void loadView() {
try {
AnchorPane pane = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("\"/com/example/myapp/ViewDashboard/ViewClients.fxml")));
anchorPaneRight.getChildren().setAll(pane);
} catch (IOException e) {
e.printStackTrace();
}
}
}
< /code>
Мой файл fxml расположен по адресу: < /p>
src/main/resources/com/example/myapp/views/ClientsView.fxml
< /code>
Я попытался использовать: < /p>
getClass().getResource("/com/example/myapp/views/ClientsView.fxml");
Но все еще не повезло.
Любая помощь будет оценена.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ading-fxml

Вернуться в «JAVA»