JavaFXのimport文がもれていると以下のようなエラー
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?> <-これがあるべきなのに書かれていない
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefWidth="100" prefHeight="40" xmlns:fx="http://javafx.com/fxml">
<children>
<Label text="Hello, World!" />
</children>
</AnchorPane>
クラスを実行しようとすると項目名が不正な旨のエラーが発生する。
エラーになった行(ハローワールド)と項目名がでるのでそのインポート文を見直せばOK。
(エラーログ)
Label is not a valid type. /C:/dev/pleiades43/workspace/firstclient/bin/jp/co/epea/firstclient/Hello.fxml:7 at javafx.fxml.FXMLLoader.createElement(FXMLLoader.java:2381) at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2311) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131)
ちなみにScene Builderだと下のようにラベルが表示されない。コンポーネント1種類だけのっていない場合は実行するまで気付かないかもしれない。
スペルミスの場合(クラスパスが通っていない場合も同じだと思う)
(エラーログ)
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Label2?> <?import javafx.scene.layout.AnchorPane?> <AnchorPane prefWidth="100" prefHeight="40" xmlns:fx="http://javafx.com/fxml"> <children> <Label2 text="Hello, World!" /> </children> </AnchorPane> java.lang.ClassNotFoundException: javafx.scene.control.Label2 /C:/dev/pleiades43/workspace/firstclient/bin/jp/co/epea/firstclient/Hello.fxml at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2455) at javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2299)
Scene Builderで開こうとするとClassNotFoundExceptionで怒られるのでこっちは多分気づく。
ファイル'C:\dev\pleiades43\workspace\firstclient\src\jp\co\epea\firstclient\Hello.fxml'のロード中にエラーが発生しました。
C:\dev\pleiades43\workspace\firstclient\src\jp\co\epea\firstclient\Hello.fxml:0: error:
java.lang.ClassNotFoundException: javafx.scene.layout.Label2