Linux运行JavaFX程序

Windows上面直接使用Maven的依赖就可以直接运行,但是Linux上面却不行。

下载JavaFX运行环境:https://gluonhq.com/products/javafx/

配置环境变量:

export JAVAFX=/home/javafx-sdk-11.0.2/lib

运行启动命令:

java --module-path $JAVAFX --add-modules javafx.fxml,javafx.controls -jar snail.jar

参考文章:https://openjfx.io/openjfx-docs/#install-javafx

后来我发现了一个更好的解决方案,就是pom.xml的配置也可以解决。
在Window上面只需要配置fxml/controls就可以了,其他的会自动引入:

<dependency>
	<groupId>org.openjfx</groupId>
	<artifactId>javafx-fxml</artifactId>
	<version>${javafx.version}</version>
	<classifier>${os.name}</classifier>
</dependency>
<dependency>
	<groupId>org.openjfx</groupId>
	<artifactId>javafx-controls</artifactId>
	<version>${javafx.version}</version>
	<classifier>${os.name}</classifier>
</dependency>

Linux打包时把其他的都显示声明就可以了:

<dependency>
	<groupId>org.openjfx</groupId>
	<artifactId>javafx-fxml</artifactId>
	<version>${javafx.version}</version>
	<classifier>${os.name}</classifier>
</dependency>
<dependency>
	<groupId>org.openjfx</groupId>
	<artifactId>javafx-controls</artifactId>
	<version>${javafx.version}</version>
	<classifier>${os.name}</classifier>
</dependency>
<dependency>
	<groupId>org.openjfx</groupId>
	<artifactId>javafx-base</artifactId>
	<version>${javafx.version}</version>
	<classifier>${os.name}</classifier>
</dependency>
<dependency>
	<groupId>org.openjfx</groupId>
	<artifactId>javafx-graphics</artifactId>
	<version>${javafx.version}</version>
	<classifier>${os.name}</classifier>
</dependency>

其实这个问题主要是我在Win上面打包的问题,默认使用的是打包系统的软件版本。

也可以直接使用Maven命令指定系统:

mvn clean package -DskipTests "-Djavafx.platform=linux"