Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using JavaFX with Intellij IDEA

I've followed a tutorial precisely and I can't seem to get it to work. The tutorial is under JavaFX and Intellij Non-modular from IDE sections: https://openjfx.io/openjfx-docs/#install-java

Here is the error message I receive when trying to run the default Intellij Idea JavaFX project:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=53491:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\jonat\IdeaProjects\Tawe-Lib FX\out\production\Tawe-Lib FX;C:\Program Files\Java\javafx-sdk-11.0.1\lib\src.zip;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.graphics.jar" sample.Main
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.base not found

Process finished with exit code 1

This makes little sense to me as I can see javafx.base under lib on the sidebar: enter image description here

The path leading to jdk-11.0.1 and javafx-sdk-11.0.1:

C:\Program Files\Java

Java is installed:

C:\Users\jonat>java --version
openjdk 11.0.1 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

JAVA_HOME variable (mentioned in guide) is set:

C:\Users\jonat>echo %JAVA_HOME%
C:\Program Files\Java\jdk-11.0.1

PATH_TO_FX variable is set:

C:\Users\jonat>echo %PATH_TO_FX%
C:\Program Files\Java\javafx-sdk-11.0.1\lib

I have really no idea where to go from here. I have followed the tutorial precisely, and it does not work. Any help would be greatly appreciated and if you require more info please just drop a comment about it.

like image 755
Jonathan Woollett-light Avatar asked Nov 22 '18 16:11

Jonathan Woollett-light


People also ask

Can I use JavaFX in IntelliJ?

JavaFX is a software platform that is used for developing desktop applications that can run across a wide variety of devices. JavaFX support in IntelliJ IDEA includes code completion, search, navigation and refactoring in JavaFX-specific source files (including . fxml and JavaFX .

How do I add JavaFX to an existing project in IntelliJ?

Click on the File menu and select Project Structure . In the dialog that appears, select the Libraries tab and click the + icon to add a new Java library: Find your javafx-sdk folder and select the lib subfolder: Click the OK button to complete the process.

What is the best IDE for JavaFX?

IntelliJ is a popular IDE that is used by many committers to develop JavaFX code. An IntelliJ project has been created for you that you need to open.


1 Answers

Based on the posted command line, this is what IntelliJ applies to run your project:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml

So in the VM options you have set verbatim what the tutorial says:

enter image description here

But you haven't applied your real path for PATH_TO_FX, as it is suggested in the picture inserted after that command in the tutorial:

enter image description here

IntelliJ doesn't resolve that variable and the module path is not set, hence you get the expected error that reveals that the JavaFX modules are not found:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found

Solution

This can be solved in two ways:

  1. Apply your path:

Edit run configurations, and in the VM options add your path:

--module-path "C:\Program Files\Java\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml

Apply, and run. It should work.

  1. Add the environment variable

You can also set an environment variable. Go to IntelliJ->File->Settings->Appearance & Behavior->Path Variables, and add PATH_TO_FX, with the path to the lib folder:

enter image description here

And then you can use the literals $PATH_TO_FX$ (Does not work for IntelliJ IDEA 2021.1 (Community Edition) on Windows) or ${PATH_TO_FX} in the VM options:

--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml

Apply, and run.

Note that this is a more permanent solution that can be apply to any other JavaFX project.

like image 178
José Pereda Avatar answered Oct 10 '22 23:10

José Pereda