2 回答
TA貢獻1802條經(jīng)驗 獲得超4個贊
您的JavaFXSkel班級必須是public,如以下文檔中所述Application:
Application子類必須聲明為公共的,并且必須有一個公共的無參數(shù)構(gòu)造函數(shù)。
ApplicationJavaFX 運行時使用反射實例化您的子類的一個實例。它通過使用類的公共無參數(shù)構(gòu)造函數(shù)來做到這一點。但是,您的JavaFXSkel類沒有顯式聲明任何構(gòu)造函數(shù),這意味著它具有隱式默認構(gòu)造函數(shù)。默認構(gòu)造函數(shù)具有與封閉類相同的訪問修飾符,在您的情況下,這是默認的包訪問。Java 語言規(guī)范1的§8.8.9中提到了這一點:
如果類不包含構(gòu)造函數(shù)聲明,則隱式聲明默認構(gòu)造函數(shù)。頂級類、成員類或本地類的默認構(gòu)造函數(shù)形式如下:
默認構(gòu)造函數(shù)與類具有相同的訪問修飾符,除非該類缺少訪問修飾符,在這種情況下,默認構(gòu)造函數(shù)具有包訪問權(quán)限(第 6.6 節(jié))。
默認構(gòu)造函數(shù)沒有形式參數(shù),除非在非
private內(nèi)部成員類中,默認構(gòu)造函數(shù)隱式聲明一個形式參數(shù),表示該類的直接封閉實例(§8.8.1、§15.9.2、§15.9.3) .
這意味著您JavaFXSkel沒有公共的無參數(shù)構(gòu)造函數(shù),因此NoSuchMethodException.
1. 不要指望初學(xué)者讀過很多 JLS(如果有的話);我只是提供它作為官方參考。
TA貢獻1805條經(jīng)驗 獲得超9個贊
在 Windows 10 上使用 JDK 11.0.2 工具為我工作。對源代碼進行了一項更改:
public class JavaFXSkel
將您的代碼保存在名為“JavaFXSkel.java”的文件中
使用以下命令編譯代碼。
javac --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules=javafx.controls -g JavaFXSkel.java
使用以下命令運行程序:
java --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules=javafx.controls JavaFXSkel
這個網(wǎng)頁有幫助:https ://openjfx.io/openjfx-docs/
這是正在運行的應(yīng)用程序的屏幕截圖。

添加回答
舉報
