質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Q&A

解決済

1回答

2373閲覧

FXMLファイルを読み込んで、コントロールを配置して利用するプログラムで実行してもエラーが出て、表示されない。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

0グッド

0クリップ

投稿2018/09/10 03:08

編集2018/09/10 06:19

Eclipseを使ってJavaFXの勉強しています。

以下のコードを組み合わせて実行しても、何も表示されないです。
FxmlSmpl.javaとfxmlSmpl.fxmlは同じpackage applicationにあります。
"fxmlSmpl.fxml"を絶対パスにしても変わりませんでした。
FXMLLoader(getClass().getResource("fxmlSmpl.fxml");

HBox root = fxml.load();

あたりにエラーがあるみたいですが、よくわかりません。
教えていただけませんか。
よろしくお願いいたします。

//FxmlSmpl.java package application; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class FxmlSmpl extends Application { @Override public void start(Stage stage) throws Exception { stage.setTitle("FxmlSmpl"); FXMLLoader fxml = new FXMLLoader(getClass().getResource("fxmlSmpl.fxml")); HBox root = fxml.load(); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } //fxmlSmpl.fxml <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.cotrol.*?> <?import javafx.scene.layout.*?> <HBox> <children> <Label text="ラベル" prefWidht="80.0" /> </children> </HBox> // 以下はコンソールに出ているエラーの内容です。 Exception in Application start method java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalStateException: Location is not set. at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) at application.FxmlSmpl.start(FxmlSmpl.java:18) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) ... 1 more Exception running application application.FxmlSmpl

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umyu

2018/09/10 06:11

読み込み対象のfxmlファイルはfxmlBMI.xmlとfxmlSmpl.xmlどちらが正しいのですか?、正しいファイル名に質問文を編集して統一してくださいな。
退会済みユーザー

退会済みユーザー

2018/09/10 06:21

すみませんでした。次のBMIのプログラムでも同じような原因で止まっていて、苦戦していてこんがらがってしまいました。
退会済みユーザー

退会済みユーザー

2018/09/10 06:22

質問の仕方が悪かったので修正しました。
guest

回答1

0

ベストアンサー

1, JavaFXで実行時例外が発生時は最初の行とCaused by:の行を例外メッセージから探してください。それが原因です。

Caused by: java.lang.IllegalStateException: Location is not set.

この例外「IllegalStateException: Location is not set.」は該当のFXMLファイルが見つからないまたはファイル名が違うのが原因です。

fxmlSmpl.fxmlファイルをどのような手順で作成したのか質問文に記載がないので、
こちらからは分かりませんが、パッケージ:applicationに属しているため、以下構成にする必要があります。
イメージ説明

ここまでの内容が質問内容に対する原因と対策です。


2, 次にFXMLファイルを手入力したことにより、2箇所スペルミスをしています。
2-1, javafx.scene.cotrol → javafx.scene.control
2-2, prefWidht → prefWidth

イメージ説明
修正版FXMLファイルです。

Java

1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.control.*?> 4 5<?import javafx.scene.layout.*?> 6 7<HBox> 8 <children> 9 <Label text="ラベル" prefWidth="80.0" /> 10 </children> 11</HBox>

◆対策としては
案1)手入力はミスの発生元なので、Scene Builderを使う。
案2)FXMLファイルの定義を警告しないeclipseではなくIntelliJ IDEAのCommunity Edition(無料です
)
を使う。

バグを修正したら+αでバグを防ぐ何かを導入してくださいな。

投稿2018/09/10 06:42

編集2018/09/10 07:20
umyu

総合スコア5846

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/09/10 07:08

ありがとうございました。参考書の最終章なのでこれを終わってから、エディタをかえたいとおもいます。 Scene Builderは導入していますが、これからです。fxmlSmpl.fxmlのチェックをすれば間違いが分かったかもしれません。fxmlBMI.fxmlの方はチェックして正常でした。fxmlBMI.javaのどこかうち間違っていると思います。大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問