问题
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:
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.
回答1:
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 the issue is quite clear: In the VM options you have set verbatim what the tutorial says:
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:
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:
- 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.
- 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:
And then you can use the literals $PATH_TO_FX$
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.
来源:https://stackoverflow.com/questions/53435349/using-javafx-with-intellij-idea