gpt4 book ai didi

java - 无法加载资源,总是返回null

转载 作者:行者123 更新时间:2023-12-01 10:15:37 26 4
gpt4 key购买 nike

我有以下问题:

我正在使用 IntelliJ IDEA 15 开发 Java 8 应用程序,使用 JavaFX 作为 GUI,使用 Gradle 作为构建自动化系统(尽管之前从未使用过 Gradle)。加载 fxml 文件时,我总是收到 IllegalStateException“位置未设置”,原因是 getClass().getResource("gui.fxml") 总是返回

我的Java代码:

package minerva.gui;

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

public class Main extends Application {

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

@Override
public void start(Stage primaryStage) throws Exception {
System.out.println(getClass().getResource("gui.fxml")==null); // DEBUG: always returns true, but why?

FXMLLoader loader = new FXMLLoader(getClass().getResource("gui.fxml"));
Parent root = (Parent) loader.load();
primaryStage.setTitle("Minerva");
primaryStage.setScene(new Scene(root));
Controller control = loader.getController();
primaryStage.show();
}
}

也许 Gradle 对此负责,我不知道。

构建.gradle:

group 'minerva.impl'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.5

repositories {
mavenCentral()
}

dependencies {
compile 'org.hsqldb:hsqldb:2.3.1'
testCompile group: 'junit', name: 'junit', version: '4.11'
}

设置.gradle:

rootProject.name = 'minerva'

我还检查了IntelliJ设置中的资源模式,它们应该是有效的:!?.java;!?.form;!?.class;!?.groovy;!?.scala;!?.flex;!?.kt;!?.clj;!?*.aj

这也是我的结构的图像: Link to the image

最佳答案

Gradle 具有与 Maven 类似的项目结构,并且源和资源是分开的。资源应放入src/main/resources

将您的 gui.fxml 文件移至 resource 文件夹中,应该可以找到它。

您生成的工件放置在 $PROJECT/target 中,如果您将来遇到类似问题,最好检查您的 jar,war,ear > 或存档以便查看文件是否按预期打包。

关于java - 无法加载资源,总是返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35914355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com