所以我知道类似的问题已经被问过多次,但我已经尝试了我发现的所有内容,但我似乎无法弄清楚这一点。我试图让这个简单的 JavaFX 示例工作:https
://openjfx.io/openjfx-docs/#install-javafx
我正在使用 IntelliJ 和 Gradle,我按照说明进行操作,但是每当我尝试在 IntelliJ 中运行程序时,它都会给出我的 FXMLLoader 出现“需要位置”错误。
根据我收集的信息,它应该通过将 scene.fxml 文件放在资源目录中来工作,但这似乎对我不起作用。我也尝试将 scene.fxml 与 MainApp 放在同一个包中,但仍然没有用。
编辑 我刚刚注意到 Gradle 构建输出似乎工作正常。当我尝试在 IntelliJ 中运行我的代码时,这只是一个问题。
所以我尝试了另一个没有 Gradle 的 JavaFX 项目。在这种情况下,IntelliJ 会创建一个“out”目录,其结构与我的项目相同。使用 Gradle 时,会创建一个“构建”目录,其中包含 fxml,但不在我期望的位置?
这是我的主要课程:
package org.openjfx;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/fxml/scene.fxml"));
Scene scene = new Scene(root);
primaryStage.setTitle("JavaFX Test");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args){
launch(args);
}
}
build.gradle:
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.8'
id 'org.beryx.jlink' version '2.15.1'
}
version '1.0-SNAPSHOT'
sourceCompatibility = 1.12
repositories {
mavenCentral()
}
javafx {
version = "12.0.2"
modules = ['javafx.controls', 'javafx.fxml']
}
mainClassName = "$moduleName/org.openjfx.MainApp"
jlink{
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
name = 'hellofx'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
这就是我的项目结构: