1.源起
最近,我在Java的官方教程中测试一个代码示例,示例用到了JavaFX。但在Intellij IDEA中,我配置好久才成功运行,所以记录下来,防止以后忘记。
2.我的编码环境
以下是我使用的编码环境:
1 2
| OS: ArchLinux IDE: Intellij Idea 2022.1.4 Community Edition
|
3.配置过程
下面讲述两种JDK版本的配置过程。
(1) JDK 18
操作系统上需要安装的包有:
- jdk-openjdk (openjdk在archlinux发行版上的最新版,撰写本文时为
18.0.2.u9
)
- java-openjfx (openjfx在archlinux发行版上的最新版,撰写本文时为
18.0.2.u2
)
如果要可视化编辑fxml
文件,需要安装下面这个包:
- javafx-scenebuilder (scenebuilder在archlinux发行版上的最新版,撰写本文时为
18.0.0
,此软件包不在archlinux的软件仓库中,需要从AUR上安装)。
jdk-openjdk
的jdk所在路径如下所示:
1 2 3 4 5 6 7 8 9 10
| /usr/lib/jvm/java-18-openjdk/ ├── bin ├── conf -> /etc/java-openjdk ├── demo ├── include ├── jmods ├── legal -> /usr/share/licenses/java-openjdk ├── lib ├── man -> /usr/share/man └── release
|
java-openjfx
的库文件安装在jdk-openjdk
的lib目录下:
1 2 3 4 5 6 7 8 9
| java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx-swt.jar java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx.base.jar java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx.controls.jar java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx.fxml.jar java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx.graphics.jar java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx.media.jar java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx.properties java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx.swing.jar java-openjfx /usr/lib/jvm/java-18-openjdk/lib/javafx.web.jar
|
scenebuilder 18
所在路径如下所示:
1 2 3 4 5 6 7 8 9 10 11 12
| /opt/scenebuilder/ ├── bin │ └── SceneBuilder ├── lib │ ├── app │ ├── libapplauncher.so │ ├── runtime │ ├── scenebuilder.desktop │ ├── SceneBuilder.png │ └── scenebuilder-SceneBuilder.desktop └── share └── doc
|
首先,在Idea中新建一个项目,jdk选择jdk-18。

然后,点击菜单栏的File -> Project Structure
(快捷键Ctrl+Alt+Shift+S),选择Modules
,在Dependencies
中添加依赖。选中openjfx的8个jar文件。


应用更改后,在src目录下新建示例文件,把示例代码粘贴过来,编译通过,但是运行会报错!


这时候,我们还需要点击菜单栏的Run -> Edit Configurations
,添加VM Options
(快捷键Alt+V)。添加的参数如下:
1
| --module-path /usr/lib/jvm/java-18-openjdk/lib/javafx.base.jar:/usr/lib/jvm/java-18-openjdk/lib/javafx.controls.jar:/usr/lib/jvm/java-18-openjdk/lib/javafx.graphics.jar --add-modules javafx.controls
|



应用更改后,再次运行,成功!

(2) jdk 8