gpt4 book ai didi

应用程序构造函数中的 JavaFX 异常(未找到此类方法异常)

转载 作者:搜寻专家 更新时间:2023-11-01 02:36:28 25 4
gpt4 key购买 nike

我正在尝试将一个 swing UI 转换为 JavaFX UI,用于我正在为其编辑源代码的聊天系统,但在尝试运行该程序时出现错误。这是我的主类:

public class Main extends Application{

private Main() {

}
private static ArgumentParser argumentParser;
private static Stage primaryStage;
private static ArgumentResponder argumentResponder;
private static UncaughtExceptionLogger uncaughtExceptionLogger;
private static Settings settings;
/**
* The main method, for starting the application.
*
* <p>See {@link Argument} for the supported arguments.</p>
*
* @param args arguments given when starting KouChat.
*/
public static void main(String[] args){

argumentParser = new ArgumentParser(args);
argumentResponder = new ArgumentResponder(argumentParser);

if (!argumentResponder.respond()) {
return;
}

new LogInitializer(argumentParser.hasArgument(Argument.DEBUG));
// Initialize as early as possible to catch all exceptions
uncaughtExceptionLogger = new UncaughtExceptionLogger();

settings = loadSettings(argumentParser);

launch(args);
}
private static Settings loadSettings(final ArgumentParser
argumentParser) {
final Settings settings = new Settings();

final ArgumentSettingsLoader argumentSettingsLoader = new
ArgumentSettingsLoader();
argumentSettingsLoader.loadSettings(argumentParser, settings);

final PropertyFileSettingsLoader propertyFileSettingsLoader = new
PropertyFileSettingsLoader();
propertyFileSettingsLoader.loadSettings(settings);

return settings;
}
@Override
public void start(Stage primaryStageObj) throws Exception{
primaryStage = primaryStageObj;
FXMLLoader loader = new FXMLLoader(getClass().getResource("ui/swing
/Chat.fxml"));
ChatController pls = new ChatController(argumentParser, settings,
uncaughtExceptionLogger);
loader.setController(pls);
pls.setStage(primaryStage);
Parent root = (Parent) loader.load();
primaryStage.setTitle("Flake");
primaryStage.setScene(new Scene(root, 959,583 ));
primaryStage.setResizable(false);
primaryStage.show();
primaryStage.setResizable(false);
primaryStage.setOnCloseRequest(e -> Platform.exit());


}
}

这是我的 Controller :

public class ChatController {
@FXML
private TextArea messageBox;
@FXML
private Label onlineCountLbl;
@FXML
private ListView userList;
@FXML
private Button fileBtn;
@FXML
private Button sendBtn;
@FXML
private ScrollPane scrollPane;
@FXML
private ListView messageArea;


private final UITools uiTools = new UITools();
//private final User me;
private Stage stage;

private ListView<String> messageList;
private UIFactory Flake;


public ChatController() {
}



private boolean done;

public ChatController(final ArgumentParser argumentParser,final Settings
settings,final UncaughtExceptionLogger uncaughtExceptionLogger){
Validate.notNull(argumentParser, "Argument parser can not be null");
Validate.notNull(settings, "Settings can not be null");
Validate.notNull(uncaughtExceptionLogger, "Uncaught exception logger
can not be null");
Flake = new UIFactory(scrollPane, userList, onlineCountLbl,
messageBox, messageArea, argumentParser,settings, uncaughtExceptionLogger);



}

public void setStage(Stage stage){
this.stage = stage;
}

}

这是我的错误信息:

Exception in Application constructor
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Unable to construct Application instance: class net.usikkert.kouchat.Main
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:907)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodException: net.usikkert.kouchat.Main.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getConstructor(Class.java:1825)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$160(LauncherImpl.java:818)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
... 1 more

我不知道如何解决这个问题,有没有办法使用 swing 使 UI 看起来更好,因为据我所见,网上的人都说我应该使用 JavaFX,因为它看起来比 JavaFX 好得多,也更容易使用 Swing 。

最佳答案

java.lang.NoSuchMethodException: package.Class.<init>()

当无法调用不带参数的构造函数时会发生此异常。大多数时候发生这种情况是因为没有提供参数的构造函数,在您的情况下,问题是构造函数是私有(private)的。

设置这条线

private Main() {

}

public Main() {

}

并且应该解决错误。

关于应用程序构造函数中的 JavaFX 异常(未找到此类方法异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49485351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com