应用程序启动方法java.lang.reflect.InvocationTargetException JavaFX映像转换中出现异常

应用程序启动方法java.lang.reflect.InvocationTargetException JavaFX映像转换中出现异常,java,javafx,netbeans,javafx-8,fxml,Java,Javafx,Netbeans,Javafx 8,Fxml,当我尝试为我的JavaFX应用程序添加图像转换时,它抛出了这个错误,我在Stackoverflow中检查了前面的问题和答案,但是所有的解决方案都只针对每个问题。我使用的是netbeans IDE 使用以下命令执行H:\thirdf\FinalF\dist\run2135548605\FinalF.jar 平台C:\Program Files\Java\jdk1.8.0\u 101\jre/bin/Java中的异常 应用程序启动方法java.lang.reflect.InvocationTarge

当我尝试为我的JavaFX应用程序添加图像转换时,它抛出了这个错误,我在Stackoverflow中检查了前面的问题和答案,但是所有的解决方案都只针对每个问题。我使用的是netbeans IDE

使用以下命令执行H:\thirdf\FinalF\dist\run2135548605\FinalF.jar 平台C:\Program Files\Java\jdk1.8.0\u 101\jre/bin/Java中的异常 应用程序启动方法java.lang.reflect.InvocationTargetException 在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法在 sun.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:62 在 sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43 java:498 at java:389 在 com.sun.javafx.application.LaunchImpl.LaunchApplicationLaunchImpl.java:328 在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法在 sun.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:62 在 sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43 java:498 at launcher.LaunchHelper$FXHelper.MainLaunchHelper.java:767 原因:java.lang.RuntimeException:应用程序启动时出现异常 方法在 com.sun.javafx.application.LaunchImpl.launchApplication1LauncherImpl.java:917 在 lambda$launchApplication$155LaunchImpl.java:182 在java.lang.Thread.runThread.java:745处,由以下原因引起: javafx.fxml.LoadException: 文件:/H:/thirdf/FinalF/dist/run2135548605/FinalF.jar/finalf/FXMLDocument.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" prefHeight="462.0" prefWidth="473.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.101" fx:controller="finalf.FXMLDocumentController">
    <children>
        <Button fx:id="button" layoutX="126.0" layoutY="225.0" onAction="#handleButtonAction" prefHeight="31.0" prefWidth="212.0" text="Play" />
        <Label fx:id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
      <Button layoutX="126.0" layoutY="312.0" mnemonicParsing="false" prefHeight="31.0" prefWidth="212.0" text="Instructions" />
      <TextField layoutX="126.0" layoutY="141.0" prefHeight="31.0" prefWidth="212.0" />
    </children>
</AnchorPane>
在 javafx.fxml.FXMLLoader.constructLoadExceptionFXMLLoader.java:2601 在javafx.fxml.fxmloader.loadImplfxmloader.java:2579处 javafx.fxml.fxmloader.loadImplfxmloader.java:2441 at javafx.fxml.fxmloader.loadImplfxmloader.java:3214 at javafx.fxml.fxmloader.loadImplfxmloader.java:3175 at javafx.fxml.fxmloader.loadImplfxmloader.java:3148 at javafx.fxml.fxmloader.loadImplfxmloader.java:3124 at javafx.fxml.fxmloader.loadImplfxmloader.java:3104 at javafx.fxml.fxmloader.loadfxmloader.java:3097 at finalf.finalf.startFinalF.java:38 at lambda$launchApplication1$162LaunchImpl.java:863 在 com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175PlatformImpl.java:326 在 com.sun.javafx.application.PlatformImpl.lambda$null$173PlatformImpl.java:295 位于java.security.AccessController.doPrivilegedNative的方法 com.sun.javafx.application.PlatformImpl.lambda$runLater$174PlatformImpl.java:294 在 com.sun.glass.ui.invokelateDispatcher$Future.runinvokelateDispatcher.java:95 位于com.sun.glass.ui.win.WinApplication.\u runLoopNative方法位于 com.sun.glass.ui.win.WinApplication.lambda$null$148WinApplication.java:191 ... 1更多原因:java.lang.NullPointerException:位置不正确 必修的。在javafx.fxml.fxmloader.loadImplfxmloader.java:3207 在javafx.fxml.fxmloader.loadImplfxmloader.java:3175处 javafx.fxml.fxmloader.loadImplfxmloader.java:3148 at javafx.fxml.fxmloader.loadImplfxmloader.java:3124 at javafx.fxml.fxmloader.loadImplfxmloader.java:3104 at javafx.fxml.fxmloader.loadfxmloader.java:3097 at finalf.FXMLDocumentController.loadSplashScreenFXMLDocumentController.java:55 在 FXMLDocumentController.initializeFXMLDocumentController.java:69 在javafx.fxml.fxmloader.loadImplfxmloader.java:2548。。。还有17个 运行应用程序finalf.finalf Java结果时出现异常:1

这是密码

fxml.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.StackPane?>


<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="574.0" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <ImageView fitHeight="450.0" fitWidth="560.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@loader.png" />
         </image>
      </ImageView>
   </children>
</StackPane>
FinalF.java

package finalf;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.stage.Stage;


public class FinalF extends Application {

    @FXML
    private Button button;

    @FXML
    private Label label;

    @FXML
    void handleButtonAction(ActionEvent event){


    }

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }


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

}
让我们试试看

在FXMLDocumentController.java中,更改loadSplashScreen方法中的第一行, 从

在FXMLDocument.fxml中,将fx:id=root添加到AnchorPane部分。改变它 从


希望通过这两个步骤解决您的问题。

如果您清楚地看到FXMLLoader.java:2579上存在空指针异常,并且它正在尝试查找文件:/H:/thirdf/FinalF/dist/run2135548605/FinalF.jar/finalf/fxml文件。fxml@Gaurav但是我已经添加了'Parent root=fxmloader.loadgetClass.getResourceFXMLDocument.fxml;'在FinalF.javait中,它位于类路径中,或者您可以使用classloader来获取这个getClass.getClassLoader.getResourcepathRead关于classloader的一些信息&我们如何使用classloader获取资源在您看来并不是那么复杂problem@Gaurav更新了,但我还是犯了同样的错误:老兄,你太棒了:D解决了AnchorPane元素中的问题,你不能只写id=AnchorPane,你必须添加fx:id=root。
package finalf;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.stage.Stage;


public class FinalF extends Application {

    @FXML
    private Button button;

    @FXML
    private Label label;

    @FXML
    void handleButtonAction(ActionEvent event){


    }

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }


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

}
StackPane pane = FXMLLoader.load(getClass().getResource("/SplashFXML.fxml"));
StackPane pane = FXMLLoader.load(getClass().getResource("SplashFXML.fxml"));
AnchorPane id="AnchorPane" prefHeight="462.0" prefWidth="473.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.101" fx:controller="finalf.FXMLDocumentController"
AnchorPane id="AnchorPane" fx:id="root" prefHeight="462.0" prefWidth="473.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.101" fx:controller="finalf.FXMLDocumentController"