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

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

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

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

FXML

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

Q&A

解決済

2回答

1382閲覧

javaFXで、例外が起きました。

ryu-bamboo

総合スコア9

JavaFX

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

FXML

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

0グッド

0クリップ

投稿2021/03/16 11:49

編集2021/03/19 11:54

javafxを初めて使って、とりあえず何か作ってみようと思って実行してみると、Label is not a valid type.とエラーが出ました。そこで調べてみると、Labelがimportされていないようだったので、importして実行してみると、今度は、ClassMotFoundExeptionが出てしまいまい、調べても英語の記事ばっかりで挫折してしまいました…
何のクラスが見つからないのか、どうやったら治せるか教えてください!
あと、fxmlではjavafx.scene.layout.*で、すべてのlayoutをimportしているはずなのに何故もう一回importしないといけないのかも教えていただけると嬉しいです!

発生している問題・エラーメッセージ

javafx.fxml.LoadException: /C:/zip-of-java/pleiades-2020-12-java-win-64bit-jre_20201222/pleiades/workspace/FXPractice/bin/application/ScheduleTable.fxml at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625) at javafx.fxml/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2863) at javafx.fxml/javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2707) at javafx.fxml/javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2676) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3237) 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 FXPractice/application.Main.start(Main.java:15) 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) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.ClassNotFoundException: javafx.scene.layout.Label at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) at javafx.fxml/javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2931) at javafx.fxml/javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2920) at javafx.fxml/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2861) ... 20 more

該当のソースコード

java

1<?xml version="1.0" encoding="UTF-8"?> 2 3 4<?import javafx.geometry.*?> 5<?import javafx.scene.control.*?> 6<?import javafx.scene.layout.*?> 7<?import javafx.scene.layout.HBox?> 8<?import javafx.scene.layout.Label?> 9 10<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="700.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" xmlns:controller="/FXPractice/src/application/PleaseProvideControllerClassName.java"> 11 <children> 12 <VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="700.0" prefWidth="100.0"> 13 <children> 14 <AnchorPane prefHeight="74.0" prefWidth="100.0"> 15 <children> 16 <Label layoutX="8.0" layoutY="6.0" prefHeight="17.0" prefWidth="36.0" text="Date" AnchorPane.leftAnchor="8.0" AnchorPane.topAnchor="6.0" /> 17 <CheckBox layoutX="25.0" layoutY="22.0" mnemonicParsing="false" text="CheckBox" AnchorPane.rightAnchor="1.0"> 18 <padding> 19 <Insets bottom="1.0" left="1.0" right="1.0" top="1.0" /> 20 </padding> 21 </CheckBox> 22 <CheckBox layoutX="26.0" layoutY="37.0" mnemonicParsing="false" text="CheckBox" AnchorPane.rightAnchor="1.0"> 23 <padding> 24 <Insets bottom="1.0" left="1.0" right="1.0" top="1.0" /> 25 </padding> 26 </CheckBox> 27 <CheckBox layoutX="26.0" layoutY="52.0" mnemonicParsing="false" text="CheckBox" AnchorPane.rightAnchor="1.0"> 28 <padding> 29 <Insets bottom="1.0" left="1.0" right="1.0" top="1.0" /> 30 </padding> 31 </CheckBox> 32 </children> 33 </AnchorPane> 34 <TableView prefHeight="480.0" prefWidth="100.0"> 35 <columns> 36 <TableColumn prefWidth="99.0" text="予定" /> 37 </columns> 38 </TableView> 39 <TextArea prefHeight="164.0" prefWidth="100.0"> 40 <VBox.margin> 41 <Insets /> 42 </VBox.margin> 43 </TextArea> 44 </children> 45 </VBox> 46 47 48 49 <Slider orientation="VERTICAL" /> 50 </children> 51</HBox> 52 53package application; 54

java

1package application; 2 3import javafx.application.Application; 4import javafx.stage.Stage; 5import javafx.scene.Scene; 6import javafx.scene.layout.BorderPane; 7 8 9public class Main extends Application { 10 @Override 11 public void start(Stage primaryStage) { 12 try { 13 BorderPane root = new BorderPane(); 14 Scene scene = new Scene(root,400,400); 15 scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 16 primaryStage.setScene(scene); 17 primaryStage.show(); 18 } catch(Exception e) { 19 e.printStackTrace(); 20 } 21 } 22 23 public static void main(String[] args) { 24 launch(args); 25 } 26} 27

java

1package application; 2 3/** 4 * Sample Skeleton for 'ScheduleTable.fxml' Controller Class 5 */ 6 7import java.net.URL; 8import java.util.ResourceBundle; 9 10import javafx.fxml.FXML; 11 12public class PleaseProvideControllerClassName { 13 14 @FXML // ResourceBundle that was given to the FXMLLoader 15 private ResourceBundle resources; 16 17 @FXML // URL location of the FXML file that was given to the FXMLLoader 18 private URL location; 19 20 @FXML // This method is called by the FXMLLoader when initialization is complete 21 void initialize() { 22 23 } 24}

試したこと

・fxmlにLabelをimportする
<!DOCTYPE configuration>を追加する
・Labelを削除してみる→今度はcheckboxで同様のエラーが起きた。

補足情報(FW/ツールのバージョンなど)

javaSE 11
JavaFX 11

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

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

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

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

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

boochnich

2021/03/19 10:28

FXMLファイルを掲載しないと回答が難しいかと。 Labelはコントロールでjavafx.scene.controlパッケージに属するがFXMLファイルでどのように指定しているのだろうか?とか。
ryu-bamboo

2021/03/19 11:18

あ、すみません、掲載し忘れていました!
guest

回答2

0

自己解決

eclipseとjdkのバージョンの不一致

投稿2021/03/29 12:25

ryu-bamboo

総合スコア9

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

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

0

FXMLファイルの次の行を削除したらよいのでは?

<?import javafx.scene.layout.Label?>

理由)Labelクラスは、javafx.scene.controlパッケージであり、javafx.scene.layoutパッケージではないため。

投稿2021/03/19 12:00

boochnich

総合スコア194

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

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

ryu-bamboo

2021/03/19 15:37

回答ありがとうございます!Labelがlayoutパッケージだと勘違いしてました… ですがそれを消してしまうとLabel is not a valid type.とエラーが出てしまうのです… また、<?import javafx.scene.control.Label?>を追加しても java.lang.ClassNotFoundException: javafx.scene.control.Labelとエラーが出てしまいます
boochnich

2021/03/20 01:31 編集

<?import javafx.scene.control.*?> とワイルドカードのimportがあればLabelを利用して 'Label is not a valid type.'とはならないと思います。 ClassNotFoundExceptionが出るとしたら、実行時の環境設定(JavaFXライブラリの参照)に問題があるように思います。コンパイルができているのであれば、些細な設定違いかもしれませんね。
ryu-bamboo

2021/03/29 12:24

そうですね、jdkやeclipseのバージョンがあべこべになってたみたいです。 回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問