Je suis bloqué sur un problème très basique. J'ai créé un simple programme hello world en utilisant JavaFX qui fonctionne très bien sur JDK 1.8. Mais quand je passe au JDK-11, il lance l'exception suivante:
Error: Could not find or load main class application.Main
Caused by: Java.lang.NoClassDefFoundError: javafx/application/Application
Voici le code que j'ai écrit dans 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);
}
}
J'ai rencontré le même problème sur Debian après la mise à niveau de Stretch vers Buster, mais maintenant, tout va bien:
Java --version
openjdk 11.0.4 2019-07-16
Pour exécuter une application Java-fx à l'aide d'un terminal, procédez comme suit:
Installez openjfx (s'il n'est pas déjà installé):Sudo apt install openjfx
Indiquez l'emplacement de la bibliothèque javafx:dpkg-query -L openjfx
La sortie doit être comme ceci:
./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/javafafx.media .jar /usr/share/openjfx/lib/javafx.swing.jar /usr/share/openjfx/lib/javafx.web.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'
jdk 11 ne prend pas en charge javafx. Oracle l'a supprimé. Mais vous pouvez ajouter javafx à votre projet en utilisant Maven.