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

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

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

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

Q&A

解決済

1回答

584閲覧

Eclipseを使ってJavaを勉強しています。プログラムが動かない

退会済みユーザー

退会済みユーザー

総合スコア0

FXML

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

0グッド

0クリップ

投稿2019/06/10 02:16

Eclipseを使ってJavaを勉強しています。
「FxmlBMI.java」を実行するとうまく動作しません。
【fxmlsmpl.fxml:6」の6行目と「FxmlBMI.java:21」の21行目でエラーが出ているみたいです。
どうすればいいか教えてください。お願いいたします。

Java

1//FxmlBMI.java 2 3package application; 4 5import javafx.application.Application; 6import javafx.event.ActionEvent; 7import javafx.fxml.FXML; 8import javafx.fxml.FXMLLoader; 9import javafx.scene.Scene; 10import javafx.scene.control.Label; 11import javafx.scene.control.TextField; 12import javafx.scene.layout.AnchorPane; 13import javafx.stage.Stage; 14 15public class FxmlBMI extends Application { 16 17 @Override 18 public void start(Stage stage) throws Exception { 19 stage.setTitle("FxmlBMI"); 20 FXMLLoader fxml = new FXMLLoader(getClass().getResource("fxmlsmpl.fxml")); 21 AnchorPane root = fxml.load(); 22 Scene scene = new Scene(root); 23 stage.setScene(scene); 24 stage.show(); 25 } 26 27 @FXML 28 private TextField txtHeight; 29 @FXML 30 private TextField txtWeight; 31 @FXML 32 private Label txtBMI; 33 @FXML // OKボタンがクリックされた 34 public void onCalcClicked(ActionEvent event) { 35 double h = Double.parseDouble(txtHeight.getText()) * 0.01; 36 double w = Double.parseDouble(txtWeight.getText()); 37 String result = String.format("BMI=%5.2f", (w / ( h * h ))); 38 txtBMI.setText(result); 39 } 40} 41

FXML

1<?xml version="1.0" encoding="UTF-8"?> 2<?import javafx.scene.control.*?> 3<?import javafx.scene.layout.*?> 4 5 6<AnchorPane xmlns:fx="http://javafx.com/fxml" fx:controller="FxmlBMI" prefWidth="220.0" prefHeight="80.0"> 7 <children> 8 <VBox spacing="5"> 9 <children> 10 <HBox> 11 <children> 12 <Label text="身長(cm):" prefWidth="80.0" /> 13 <TextField fx:id="txtHeight" prefWidth="100.0" /> 14 </children> 15 </HBox> 16 <HBox> 17 <children> 18 <Label text="体重(kg):" prefWidth="80.0" /> 19 <TextField fx:id="txtWeight" prefWidth="100.0" /> 20 </children> 21 </HBox> 22 <HBox> 23 <children> 24 <Label text="BMI" fx:id="txtBMI" prefWidth="100.0" /> 25 <Button onAction="#onCalcClicked" text="BMI計算" prefWidth="80.0" /> 26 </children> 27 </HBox> 28 </children> 29 </VBox> 30 </children> 31</AnchorPane> 32 33

error

1Exception in Application start method 2Exception in thread "main" java.lang.reflect.InvocationTargetException 3 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 4 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 5 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 6 at java.lang.reflect.Method.invoke(Method.java:498) 7 at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) 8Caused by: java.lang.RuntimeException: Exception in Application start method 9 at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) 10 at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$159(LauncherImpl.java:182) 11 at java.lang.Thread.run(Thread.java:748) 12Caused by: javafx.fxml.LoadException: 13/C:/pleiades/eclipse/JavaFX_topic16/bin/application/fxmlsmpl.fxml:6 14 15 at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) 16 at javafx.fxml.FXMLLoader.access$700(FXMLLoader.java:103) 17 at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:922) 18 at javafx.fxml.FXMLLoader$InstanceDeclarationElement.processAttribute(FXMLLoader.java:971) 19 at javafx.fxml.FXMLLoader$Element.processStartElement(FXMLLoader.java:220) 20 at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:744) 21 at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707) 22 at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527) 23 at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 24 at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) 25 at application.FxmlBMI.start(FxmlBMI.java:21) 26 at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$166(LauncherImpl.java:863) 27 at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$179(PlatformImpl.java:326) 28 at com.sun.javafx.application.PlatformImpl.lambda$null$177(PlatformImpl.java:295) 29 at java.security.AccessController.doPrivileged(Native Method) 30 at com.sun.javafx.application.PlatformImpl.lambda$runLater$178(PlatformImpl.java:294) 31 at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 32 at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 33 at com.sun.glass.ui.win.WinApplication.lambda$null$152(WinApplication.java:177) 34 ... 1 more 35Caused by: java.lang.ClassNotFoundException: FxmlBMI 36 at java.net.URLClassLoader.findClass(URLClassLoader.java:382) 37 at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 38 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 39 at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 40 at javafx.fxml.FXMLLoader$ValueElement.processAttribute(FXMLLoader.java:920) 41 ... 17 more 42

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

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

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

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

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

guest

回答1

0

ベストアンサー

FXML内のコントローラーのクラス名が間違ってるのが原因と思います。

fx:controller="FxmlBMI"

ここにはクラスのFQN(Full Qualified Name)を指定します。つまり

fx:controller="application.FxmlBMI"

こうなってないとクラスを特定できませんよね!?

投稿2019/06/10 03:33

KSwordOfHaste

総合スコア18394

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

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

退会済みユーザー

退会済みユーザー

2019/06/10 04:05

いつもおせわになっています。できました。 このあとも、同じような症状で行き詰っていますが、かんばります。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問