web-dev-qa-db-ja.com

エラー:メインクラスapplication.Mainが見つからないか、ロードできませんでした。原因:Java.lang.NoClassDefFoundError:javafx / application / Application JDK 11

私は非常に基本的な問題に行き詰まっています。 JFX 1.8で正常に動作するJavaFXを使用して簡単なhello worldプログラムを作成しました。しかし、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
Shahrukh S.

私はストレッチからバスターにアップグレードした後、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/share/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. Jarアプリケーションを実行しますjavafxパスとモジュールを含めることにより
    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'
2
Lotfi Hocini

jdk 11はjavafxをサポートしていません。 Oracleはそれを削除しました。しかし、Mavenを使用してプロジェクトにjavafxを追加できます。

1
Alexandr Tkach