1

所以我知道类似的问题已经被问过多次,但我已经尝试了我发现的所有内容,但我似乎无法弄清楚这一点。我试图让这个简单的 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'
}

这就是我的项目结构:

项目结构

4

0 回答 0