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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

FXML

FXMLは、JavaFXに用意されているXMLベースのGUI記述言語です

Q&A

解決済

1回答

896閲覧

【JavaFX】JARファイルでFXMLがロードされない

ryuse

総合スコア13

JavaFX

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

FXML

FXMLは、JavaFXに用意されているXMLベースのGUI記述言語です

0グッド

0クリップ

投稿2019/01/10 04:45

編集2019/01/10 05:13

前提・発生している問題

現在JavaFXを使ってアプリケーションを作っております。
以下に記載しているコードでコンパイルをしたところ、Eclipse上では問題なく動作しますが、
Eclipseから実行可能JARファイルとして出力したものを実行した際に、
Exceptionが発生してアプリケーションが動作しません。

SampleController.loadFXML()のfxmlLoader.load()内で例外が発生しており、
以下のようにFXMLファイルが見つからないとExceptionが発生します。

これはFXMLのリソースの指定方法が悪いのでしょうか。
ご教授よろしくお願い致します。

Exception

1java.lang.IllegalStateException: Location is not set. 2 at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2434) 3 at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) 4 at application.SampleController.loadFXML(SampleController.java:29) 5 at application.SampleController.<init>(SampleController.java:21) 6 at application.Main.start(Main.java:17) 7 at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) 8 at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 9 at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 10 at java.security.AccessController.doPrivileged(Native Method) 11 at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 12 at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 13 at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 14 at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 15 at java.lang.Thread.run(Unknown Source)

該当のソースコード

構成は下記の通りとなっております。
src
├application
│ ├Main.java
│ └SampleController.java
└FXML ─ sample.fxml

Main

1package application; 2 3import javafx.application.Application; 4import javafx.stage.Stage; 5import javafx.scene.Parent; 6import javafx.scene.Scene; 7 8public class Main extends Application { 9 private static Stage stage; 10 private static SampleController sampleController; 11 12 @Override 13 public void start(Stage primaryStage) { 14 stage = primaryStage; 15 sampleController = new SampleController(); 16 replaceScene(sampleController); 17 } 18 19 public static void main(String[] args) { 20 launch(args); 21 } 22 23 private void replaceScene(Parent controller) { 24 Scene scene = new Scene(controller); 25 stage.setScene(scene); 26 stage.show(); 27 } 28}

SampleController

1package application; 2 3import java.io.IOException; 4import java.net.URL; 5import java.util.ResourceBundle; 6 7import javafx.fxml.FXMLLoader; 8import javafx.fxml.Initializable; 9import javafx.scene.layout.Pane; 10 11public class SampleController extends Pane implements Initializable{ 12 13 public SampleController() { 14 loadFXML(); 15 } 16 17 private void loadFXML() { 18 FXMLLoader fxmlLoader = new FXMLLoader(Main.class.getResource"../fxml/Sample.fxml")); 19 fxmlLoader.setRoot(this); 20 fxmlLoader.setController(this); 21 try { 22 fxmlLoader.load(); 23 } catch (IOException e) { 24 e.printStackTrace(); 25 } 26 } 27 28 @Override 29 public void initialize(URL location, ResourceBundle resources) { 30 31 } 32}

fxml

1<?xml version="1.0" encoding="UTF-8"?> 2 3<?import javafx.scene.control.*?> 4<?import java.lang.*?> 5<?import javafx.scene.layout.*?> 6<?import javafx.scene.layout.AnchorPane?> 7 8 9<fx:root maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" type="Pane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> 10 <children> 11 <Label layoutX="62.0" layoutY="65.0" text="Sample" /> 12 </children> 13</fx:root> 14

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

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

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

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

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

guest

回答1

0

自己解決

コーディングミスによる間違いでした。

投稿2019/01/11 01:50

ryuse

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問