前提・実現したいこと
JavaFX + Gradle を使ってソフトウェア開発をしようと思っています。
3日調べて解決できなかったので、質問させて頂きます。
startメソッドからfxmlファイルをロードする処理を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
19:07:18: タスクを実行中 'run'... > Task :compileJava > Task :processResources NO-SOURCE > Task :classes > Task :configJavafxRun > Task :run FAILED 3 actionable tasks: 3 executed Exception in Application start method java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051) Caused by: java.lang.RuntimeException: Exception in Application start method at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.NullPointerException: Location is required. at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3230) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113) at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106) at icee.Main.start(Main.java:18) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174) ... 1 more Exception running application icee.Main FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':run'. > Process 'command 'C:\Program Files\Java\jdk-11.0.10\bin\java.exe'' finished with non-zero exit value 1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 1s 19:07:19: タスクの実行を完了しました 'run'。
該当のソースコード
Main.java
java
1package icee; 2 3import javafx.application.Application; 4import javafx.fxml.FXMLLoader; 5import javafx.scene.Parent; 6import javafx.scene.Scene; 7import javafx.stage.Stage; 8 9public class Main extends Application { 10 11 public static void main(String[] args) { 12 launch(args); 13 } 14 15 @Override 16 public void start(Stage primaryStage) throws Exception { 17 Parent root = FXMLLoader.load(getClass().getResource("design.fxml")); 18 primaryStage.setTitle("Hello World"); 19 primaryStage.setScene(new Scene(root, 300, 275)); 20 primaryStage.show(); 21 } 22} 23
design.fxml
fxml
1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import java.lang.*?> 4<?import java.util.*?> 5<?import javafx.scene.*?> 6<?import javafx.scene.control.*?> 7<?import javafx.scene.layout.*?> 8 9<AnchorPane xmlns="http://javafx.com/javafx" 10 xmlns:fx="http://javafx.com/fxml" 11 fx:controller="icee.Main" 12 prefHeight="400.0" prefWidth="600.0"> 13 14</AnchorPane> 15
build.grade
gradle
1plugins { 2 id 'java' 3 id 'application' 4 id 'org.openjfx.javafxplugin' version '0.0.8' 5} 6 7group 'io.github.iceE-1591' 8version '1.0' 9 10sourceCompatibility = 11 11 12repositories { 13 mavenCentral() 14} 15 16allprojects { 17 repositories { 18 maven { url 'https://jitpack.io' } 19 } 20} 21 22dependencies { 23 testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' 24 testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' 25} 26 27test { 28 useJUnitPlatform() 29} 30 31javafx { 32 modules = [ 'javafx.controls' , 'javafx.fxml' ] 33 version = '11.0.2' 34} 35 36dependencies { 37 implementation 'com.github.sapher:youtubedl-java:1.1' 38} 39 40mainClassName = 'icee.Main'
試したこと
JavaFXチュートリアルを使って、プロジェクトを作成した場合にはしっかりfxmlの記述通りにウィンドウが表示されます。
ですが、Gradeでプロジェクトを作成した場合、Parent root = FXMLLoader.load(getClass().getResource("design.fxml"));
のloadの部分でエラーが吐かれます。
ファイル構造
file構造
1src 2 ┗main 3 ┗java 4 ┗icee 5 ┣design.fxml 6 ┗Main.java
補足情報(FW/ツールのバージョンなど)
intellij idea
Java SE 11
Gradle 6.8
JavaFX 11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。