错误:找不到或加载主类应用程序。主因:java.lang.NoClassDefFoundError:javafx / application / Application JDK 11

时间:2018-11-15 12:17:59

标签: java javafx java-11

我陷入一个非常基本的问题。我使用JavaFX创建了一个简单的hello world程序,该程序在JDK 1.8上运行良好。但是当我切换到JDK-11时,它将引发以下异常:

Error: Could not find or load main class application.Main
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application

以下是我在Eclipse中编写的代码。

package application;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;


public class Main extends Application {

    private Scene theScene;
    @Override
    public void start(Stage primaryStage) {
try {

            FXMLLoader loader = new FXMLLoader(getClass().getResource("MyScene.fxml"));
            Parent mainPane = loader.load();


            theScene = new Scene(mainPane);
            primaryStage.setScene(theScene);
            primaryStage.show();

        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public void setTheScene(Scene theScene) {
        this.theScene = theScene;
    }

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

4 个答案:

答案 0 :(得分:2)

从延展升级到失败者之后,我在debian上也遇到了同样的问题,但是现在,一切都很好:

java --version
  

openjdk 11.0.4 2019-07-16

要使用终端运行Java-fx应用程序,请执行以下步骤:

  1. 安装openjfx(如果尚未安装):
    sudo apt install openjfx

  2. 列出javafx库的位置:
    dpkg-query -L openjfx
    输出应如下所示:

  

。   / usr   / usr /共享   / usr / share / doc   / usr / share / doc / openjfx   /usr/share/doc/openjfx/TODO.Debian   /usr/share/doc/openjfx/changelog.Debian.gz   / usr / share / doc / openjfx / copyright   / usr / share / openjfx   / usr / share / openjfx / lib   /usr/share/openjfx/lib/javafx.properties   /usr/share/openjfx/lib/javafx.base.jar   /usr/share/openjfx/lib/javafx.controls.jar   /usr/share/openjfx/lib/javafx.fxml.jar   /usr/share/openjfx/lib/javafx.graphics.jar   /usr/share/openjfx/lib/javafx.media.jar   /usr/share/openjfx/lib/javafx.swing.jar   /usr/share/openjfx/lib/javafx.web.jar

  1. 通过包含javafx路径和模块来运行jar应用程序
    java --module-path $PATH_TO_OPENJFX-LIB --add-modules module_1,module_2,module_3,...,module_n -jar $PATH_TO_JAR_FILE

示例:

java --module-path /usr/share/openjfx/lib --add-modules=javafx.controls,javafx.fxml,javafx.base,javafx.media,javafx.web,javafx.swing -jar '/home/lotfi/Documents/MyAppfolder/my_application.jar'

答案 1 :(得分:0)

jdk 11不支持javafx。 Oracle删除了它。 但是您可以使用Maven将javafx添加到您的项目中。

答案 2 :(得分:0)

在Eclipse中:运行配置->参数-> VM参数:

--module-path ${project_classpath:REPLACE_ME_WITH_YOUR_PROJECT_NAME} 

--add-modules javafx.controls,javafx.fxml

答案 3 :(得分:0)

在执行Java应用程序时遇到类似的错误,找不到已经安装的软件包,找到了应用程序正在读取的路径,并在其中添加了指向已安装的javafx库的符号链接。

示例:

user@server:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib$ sudo ln -s /usr/share/openjfx/lib/javafx.properties