使用Spring Boot执行时,应用程序启动方法中出现JavaFX异常

使用Spring Boot执行时,应用程序启动方法中出现JavaFX异常,java,spring-boot,javafx,pom.xml,Java,Spring Boot,Javafx,Pom.xml,我已经创建了一个简单的javaFX程序,并通过使该项目成为maven项目将springboot添加到javaFX中。在添加SpringBoot之前,我没有收到任何错误,应用程序运行良好。 我已经在下面提供了完整的代码 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www

我已经创建了一个简单的javaFX程序,并通过使该项目成为maven项目将springboot添加到javaFX中。在添加SpringBoot之前,我没有收到任何错误,应用程序运行良好。 我已经在下面提供了完整的代码

pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
    </parent>
    <groupId>groupId</groupId>
    <artifactId>RMI-DesktopClient</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>  
</project>
Login.java

  public class Login {
    public static void loadView(Stage stage) {

        try {
            Parent view = FXMLLoader.load(Login.class.getResource("../../../../../resources/com.ui.views/Login.fxml"));
            stage.setScene(new Scene(view));
            stage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Login.fxml

    <AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.alarmsystem.ui.views.Login">
   <children>
      <Label layoutX="137.0" layoutY="157.0" text="Hello JavaFX">
         <font>
            <Font size="59.0" />
         </font>
      </Label>
   </children>
</AnchorPane>
文件结构

资源路径
我不确定这是否与Spring有关;用于FXML的资源名称不是有效的资源名称(堆栈跟踪表明无法找到FXML文件是问题所在)

具体来说,资源名称中不能包含
,因此
com.ui.view
都是无效的

因此这里有两个问题:一个是资源名称与其中指定的“父目录”不兼容,另一个是您在
resources
下创建了一个包含非法
字符的文件夹(不是包)。还要注意,
resources
是一个源文件夹,在运行时不可用

因此,首先,在参考资料下创建一个名为
com.ui.views
的包,并将FMXL放在其中。我不使用IntelliJ,所以我不确定是否有这样做的选项,但如果没有,您可以创建一个文件夹
com
,它的一个子文件夹
ui
,以及它的一个子文件夹
views
,并将FXML文件放在
views

那么FXML的正确资源名是

Parent view = FXMLLoader.load(Login.class.getResource("/com/ui/views/Login.fxml"));
如果您稍微重新构造FXML文件和
Login
类,使其位于同一个包中(即,您在
资源
下创建了
com.alarmsystem.ui.views
包),那么您只需执行以下操作即可

Parent view = FXMLLoader.load(Login.class.getResource("Login.fxml"));

如果需要进一步排除故障,可以通过查看
target/classes
文件夹查看资源部署的位置(因此在运行时可以找到资源)

但是路径不是intellij自动构建的路径,谢谢,但我仍然会遇到相同的错误,错误是在我添加spring boot时开始的,pom.xml中的依赖项可能有问题吗?@GeorgeSilva没有,这与依赖项无关。我不使用IntelliJ,但我看到其他人表示,在某些情况下,IntelliJ不能提供正确的资源名称。(盲目相信IDE的建议总是错误的。)你的
target/classes
文件夹中有什么?我检查了target类,路径是正确的,我更改了路径,将fxml文件包含在与Login相同的包中,但仍然得到error@GeorgeSilva更新问题以显示
target/classes的实际内容
我刚才添加了target/classes
Parent view = FXMLLoader.load(Login.class.getResource("/com/ui/views/Login.fxml"));
Parent view = FXMLLoader.load(Login.class.getResource("Login.fxml"));