日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了Load()在Java 9之前的風格中工作得很好,但在模塊中失敗的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我成功地制作了一個簡單的JavaFX FXML程序(在Java 9之前的風格,而不是模塊)
我使用了3個文件和主類,如下所示:

└───javafxfxmldemo
        FXMLDocument.fxml
        FXMLDocumentController.java
        JavaFXFXMLDemo.java

主類

public class JavaFXFXMLDemo extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

它在NetBeans 9和DOS終端的javac和Java上都能完美地工作。

現在,我嘗試在Java模塊中編寫相同的程序。以下是我的源代碼結構:

└───src
    └───com.fxmlapp
        │   module-info.java
        │
        └───com
            └───fxmlapp
                    FXEventModuleDemo.java
                    FXMLDocument.fxml
                    FXMLDocumentController.java

MODULE-info.java

module com.fxmlapp {
    requires javafx.controls;
    requires javafx.fxml;

    exports com.fxmlapp;
}

除主類名稱外,其他所有代碼都相同。

它在NetBeans 9上編譯,我也可以在DOS終端上編譯,如下所示:

javac -d modscom.fxmlapp --module-path %PATH_TO_FX% srccom.fxmlappmodule-info.java srccom.fxmlappcomfxmlappFXEventModuleDemo.java srccom.fxmlappcomfxmlappFXMLDocumentController.java

編譯后,我將FXMLDocument.fxml文件放在mods目錄中,如下所示。

├───mods
│   └───com.fxmlapp
│       │   module-info.class
│       │
│       └───com
│           └───fxmlapp
│                   FXEventModuleDemo.class
│                   FXMLDocument.fxml
│                   FXMLDocumentController.class
│
└───src
    └───com.fxmlapp
        │   module-info.java
        │
        └───com
            └───fxmlapp
                    FXEventModuleDemo.java
                    FXMLDocument.fxml
                    FXMLDocumentController.java

但是,它無法運行。我在NetBeans 9和DOS終端上都試過了,如下所示:

java --module-path %PATH_TO_FX%;mods -m com.fxmlapp/com.fxmlapp.FXEventModuleDemo

錯誤來自以下語句:

Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

我知道,有很多帖子都有這個問題,但當Java模塊出現錯誤時,我找不到解決方案。我認為這不是文件位置問題,因為下面的語句有效。

System.out.println(getClass().getResource("FXMLDocument.fxml"));

FXMLLoader.load()似乎在模塊中不起作用。

如果它在非模塊樣式下工作,我相信它也一定在模塊中工作。

實際的錯誤消息如下所示;是的,我看到了很多關于這個錯誤的問題,但我仍然找不到Java模塊的解決方案)我的模塊-info.java或者我的編譯或運行命令有問題嗎?

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: javafx.fxml.LoadException:
/D:/OpenJFX_Demo/FXEventModuleDemo/mods/com.fxmlapp/com/fxmlapp/FXMLDocument.fxml:14

        at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2603)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466)
        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 com.fxmlapp/com.fxmlapp.FXEventModuleDemo.start(FXEventModuleDemo.java:13)
        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
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private javafx.scene.control.Label com.fxmlapp.FXMLDocumentController.label accessible: module com.fxmlapp does not "opens com.fxmlapp" to module javafx.fxml
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
        at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
        at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:176)
        at java.base/java.lang.reflect.Field.setAccessible(Field.java:170)
        at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.addAccessibleFields(FXMLLoader.java:3479)
        at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.access$3900(FXMLLoader.java:3328)
        at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor$1.run(FXMLLoader.java:3444)
        at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor$1.run(FXMLLoader.java:3440)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.addAccessibleMembers(FXMLLoader.java:3439)
        at javafx.fxml/javafx.fxml.FXMLLoader$ControllerAccessor.getControllerFields(FXMLLoader.java:3378)
        at javafx.fxml/javafx.fxml.FXMLLoader.injectFields(FXMLLoader.java:1170)
        at javafx.fxml/javafx.fxml.FXMLLoader.access$1600(FXMLLoader.java:105)
        at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processValue(FXMLLoader.java:865)
        at javafx.fxml/javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:759)
        at javafx.fxml/javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2722)
        at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2552)
        ... 17 more
Exception running application com.fxmlapp.FXEventModuleDemo

推薦答案

@空指針所述:

錯誤說明模塊com.fxmlapp未將com.fxmlapp”打開”到模塊javafx.fxml

因此,我添加了–Add-Open com.fxmlapp/com.fxmlapp=javafx.fxml。它解決了這個問題。

這篇關于Load()在Java 9之前的風格中工作得很好,但在模塊中失敗的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:Load 但在 失敗 工作 很好 模塊 風格
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定