【问题标题】:Java Main class cannot be found or loaded errorJava Main 类找不到或加载错误
【发布时间】:2020-01-27 15:24:34
【问题描述】:

我是 JavaFX 新手,目前我正在尝试构建一个包含一些组件的简单 Stage。我已经导入了 jfxrt.jar 文件,并且能够在我的类 App.java 中成功使用这些库。然而,当我运行我的代码时,我在控制台上收到以下错误消息:

Error: Could not find or load main class App
Reason: java.lang.NoClassDefFoundError: javafx/application/Application

这是我的代码:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;


public class App extends Application {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        launch(args);
    }

    @Override
    public void start(Stage firstStage) throws Exception {
       firstStage.setTitle("Image Processing App - Andromachi Rozaki");     
       Button button = new Button();
       button.setText("Open Image");

       StackPane layout = new StackPane();
       layout.getChildren().add(button);

       Scene scene = new Scene(layout, 300, 250);
       firstStage.setScene(scene);
       firstStage.show();
    }

}

有谁明白为什么会发生这种情况以及我该如何解决它?提前致谢

编辑

我正在运行链接here中的App.java文件

【问题讨论】:

  • 类路径中是否提供了所有必需的库?
  • 您确定要执行正确的文件吗?你的设置是什么?
  • @Nearoo 我更新了我的帖子
  • 查找 jfxrt.jar 的路径并将其包含在计算机的 CLASSPATH 中。例如在 Windows 上:CLASSPATH=%CLASSPATH%;path_of_jfxrt.jar
  • 您的 JAR 文件没有提及 javafx.jar 或在其类路径中调用的任何内容。

标签: java javafx main


【解决方案1】:

不确定您使用的是什么 IDE,但您可以尝试将其放入 VM 选项中

--module-path PATH_TO_JAR --add-modules javafx.controls,javafx.fxml

【讨论】:

    【解决方案2】:

    问题是 JavaFX 未捆绑在当前版本的 Oracle JDK 中。 我认为您使用的是 Java 11,这意味着 不包括 JavaFX

    我了解到您已经下载了 JavaFX 库,您是否将其作为库包含到您的 IDE 中?

    从屏幕截图中我不明白您使用的是哪个 IDE,但大多数情况下您可以将 jar 文件添加到项目的文件夹中,右键单击它并找到类似 作为库添加到项目中。这可能会解决您的问题。

    【讨论】:

    • 我已经更新了我帖子中的照片。我已经导入了库,在我引用的库下可以看到...现在不是导入库了吗?
    • 您仍然没有告诉我们您使用的是哪个 IDE。问题是:如果您在编译时没有错误,则应正确引用库。
    • 哦,对不起!我正在使用 Eclipse
    • Eclipse IDE 有 JavaFX 插件。尝试在 Internet 上查找那些,否则您可能会尝试从以下位置安装完整的 JavaFX SDKgluonhq.com/products/javafx
    • @hispaniccoder JavaFX 的一个怪癖是,如果您的主类是 Application 的子类,那么 JavaFX 模块 必须modulepath,而不是 classpath。至少 JavaFX 11 到 JavaFX 13 都是如此。查看Getting Started with JavaFX 以了解如何将 JavaFX 库放在模块路径上;它解释了主要 Java IDE 和/或构建工具的过程。
    猜你喜欢
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多