[解決済み] Application startメソッドで例外が発生する。JavaFx 11
2022-03-04 21:28:38
質問
TextFieldとButtonが1つずつある画面を作ろうとしたら、"Exception in Application start method"と表示されました。初めて私はこの質問からの解決を試みたが、うまくいかない。
Application start method errorでExceptionが発生する。他の解決策でうまくいかない
私はJava 11、javaFx 11を使用しています。 javaFxはmavenを使用しています。
メインクラスは:
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class StartClass extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent parent = FXMLLoader.load(getClass().getResource("../userInterface/CreateProjectScreen.fxml"));
stage.setTitle("IEPCP");
stage.setScene(new Scene(parent ));
stage.show();
}
}
FXML ファイルは
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controllers.ui.CreateProjectController">
<children>
<AnchorPane prefHeight="402.0" prefWidth="601.0">
<children>
<Button fx:id="sendButton" layoutX="249.0" layoutY="310.0" mnemonicParsing="false" onAction="#sendButtonClicked" text="Button" />
<TextField fx:id="directory" layoutX="66.0" layoutY="85.0" prefHeight="25.0" prefWidth="470.0" />
</children>
</AnchorPane>
</children>
</AnchorPane>
コントローラクラスです。
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
public class CreateProjectController {
@FXML
private TextField directory;
@FXML
private Button sendButton;
public TextField getDirectory() {
return directory;
}
public void setDirectory(TextField directory) {
this.directory = directory;
}
public void sendButtonClicked(ActionEvent actionEvent){
System.out.println("You write: " + getDirectory().getText());
}
}
これはエラー受信です。
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x3e122bd1) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x3e122bd1
at com.sun.javafx.fxml.FXMLLoaderHelper.<clinit>(FXMLLoaderHelper.java:38)
at javafx.fxml.FXMLLoader.<clinit>(FXMLLoader.java:2056)
at primary.StartClass.start(StartClass.java:17)
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)
... 1 more
Exception running application primary.StartClass
Mavenの依存関係。
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11</version>
</dependency>
</dependencies>
解決方法は?
この問題は、あなたが作成した
FXMLLoader
.
もし、FXML ファイルが
src/main/resources/userInterface/CreateProjectScreen.fxml
であれば、あなたの
FXMLLoader
は、次のように呼び出される必要があります。
Parent parent = FXMLLoader.load(getClass().getResource("/userInterface/CreateProjectScreen.fxml"));
先頭のスラッシュは、クラスパスのルートを参照します(つまり
src/main/resources
). それに続くパスは、FXMLファイルへの相対パスです。
また、モジュールアクセスエラーが発生しています。エラーメッセージに記載されているモジュールをエクスポートする必要があり、そうしないとJavaFXはそれにアクセスすることができません。
関連
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] ボタンでTextFieldをクリアする(Java)
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] IntegerからBigIntegerへの変換