java.lang.NoClassDefFoundError: javafx/application/Application

I installed OpenJDK-11 as described here. I ran sudo apt install openjfx

My java version:

$ java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu1, mixed mode, sharing)

But still I get ava.lang.NoClassDefFoundError: javafx/application/Application which indicates that the jre cannot find the FX classes.


Solution 1:

You are getting this error because your runtime PATH to javafx is probably incorrect or missing.

Please, follow these steps:

Check the path of JavaFX. (example: /usr/share/openjfx/lib/)

Then run command:

java --module-path $FX-PATH --add-modules javafx.controls -jar sample.jar

where $FX-PATH should be set or replaced with mentioned JavaFX path.

If you need to add more modules, you can specify them in --add-modules parameter.
(--add-modules javafx.controls,javafx.fxml)

Solution 2:

Java FX is no longer packaged with the Java runtime. You must download and package the Jar with JavaFX runtime, see https://openjfx.io/openjfx-docs/ in order to learn how best to get this up and running.

Solution 3:

I recommend you to go with https://openjfx.io/openjfx-docs/ .i am using Eclipse IDE but it works for all IDE

Then you can refer to this global variable when setting the VM options as:

In IDE Right-click on project->Run As -> Run Configuration ->Arguments->VM Arguments

For Windows,

--module-path "\path to javafx\lib" --add-modules javafx.controls,javafx.fxml

For Linux,

--module-path /path to javafx/lib --add-modules javafx.controls,javafx.fxml