最近有小伙伴使用JFX搭建 简易版的桌面GUI程序
刚好项目基于JDK11,那么首先我们就必须准备好JFX模块
JFX简介
Oracle 近日在其官方博客宣布,从 JDK 11 开始,JavaFX 将作为独立模块从 JDK 中分离出来,以使 JavaFX 更易于被采用。该调整将降低新贡献者参与 OpenJFX 开源社区的门槛。
JavaFX 于 JavaOne 2007 大会上首次对外公布,并被迅速拿来与 Adobe Flex 和 Microsoft Silverlight 做比较。该技术于 2011 年完全开源,并在一年后成为 Oracle JDK 的一部分。
Oracle 解释称,随着 Java SE 9 模块系统的出现,是时候将 JavaFX 与 JDK 分离开来,以便让 JavaFX 可以单独下载使用。这将使使用 JavaFX 框架的开发人员获得更多的自由度和灵活性。而且,随着 JDK 开发团队的工作重点主要放在其快速版本迭代上,JavaFX 需要除 Oracle 之外,更多其他 OpenJFX 社区的贡献力量驱动。
下载方案
1、openjfx官网下载
2、选择对应系统、JDK一致的版本
3、整体结构和内容
事故现场
事故1
直接从官网下载JFX后 ,直接把 lib中的依赖利用 Build Path记载到项目中
此时发现项目上有红色感叹号
Description Resource Path Location Type
Archive for required library: 'lib/javafx.properties' in project 'JFXTest'
cannot be read or is not a valid ZIP file JFXTest Build path Build Path Problem
The project cannot be built until build path errors are resolved
事故原因
不小心把javafx.properties配置文件给当成jar包加载到项目中,导致无法识别 ZIP文件
移除该文件就行 如下图
运行代码
public class AppLauncher {
public static void main(String[] args) {
Application.launch(MediaDemo.class, args);
}
}
事故现场2
异常代码
Graphics Device initialization failed for : d3d, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
... 1 more
Exception in thread "main" java.lang.RuntimeException: No toolkit found
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:833)
图形设备初始化失败:d3d,sw
初始化QuantumRenderer时出错:找不到合适的管道
原因
怀疑无法同SWT直接 Build Path 相关jar包后生效
把JFX相关依赖打包成常用的自定义用户依赖 如同 平时加载的 **JRE System Library [jre]**一样
1、右键项目 选择 Build Path 点击 配置中心 Configure …
2、基于Classpath的位置 添加 User Library
3、自定义一个名字描述制作的依赖包
4、添加想要扩展的j Jars…
找到官网下载的JFXlib目录 选中所有的文件
5、打包完成
6、自定义的JFX11完成
7、项目配置JFX11
8、测试运行效果