IDEA使用JFX的相关问题
1 问题概述
首先是javafx找不到对应的类:

其次是
class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x50f36265) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics)
because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x50f36265
这种问题。
或者是
Error: JavaFX runtime components are missing, and are required to run this application
这样的问题。
2 解决方案
环境Manjaro+OpenJDK11,首先需要确保有OpenJFX,但是,不能直接使用pacman/yaourt安装:

虽然看上去没什么问题,OpenJDK使用的也是pacman安装的,想着JFX也可以这样,安装之后在
/usr/lib/jvm/java-11-openjdk/lib
下面确实有了JFX的文件,但是装了之后IDEA死活识别不出来,没办法,只能手动安装JFX。
手动安装的OpenJFX一加就马上识别出来了,所以,手动安装吧,也不难,戳这里下载所需要的版本,解压到对应的位置,然后在IDEA中的外部库添加其中的lib文件夹即可:

添加之后另一个问题是
class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x50f36265) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics)
because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x50f36265
给出的最多的答案是修改VM Options:
--module-path=JFX_LIB_PATH --add-modules=javafx.controls,javafx.fxml
其中JFX_LIB_PATH是JFX下的lib目录路径,但是不行,另一个方案是在源文件目录下添加module-info.java:
module javafx.graphics{
exports com.sun.javafx.util
}
也不行,直接报错,然后又搜索到了另一个解决办法,额外添加一个类似启动类的java文件,比如叫App.java:
import javafx.application.Application;
public class App {
public static void main(String[] args) {
Application.launch(Main.class,args);
}
}
然后修改IDEA的运行配置,把主类修改为App。
这样笔者的问题就解决了,可以正常运行JFX程序了。
3 其他问题
Caused by: java.lang.NullPointerException: Location is required.
其中一个可能的办法是:
Parent root = FXMLLoader.load(getClass().getResource("xxx.fxml"));
改为:
Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("xxx.fxml"));
笔者试过,这个方法不行,另一个解决的方法是,修改pom.xml:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.fxml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
其中include中的两个星号指的是fxml的文件夹的位置。
笔者试过这个方法可行,若fxml文件在源码根目录,可以修改为:
<include>*.fxml</include>
IDEA使用JFX的相关问题的更多相关文章
- 嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- SQL Server相关书籍
SQL Server相关书籍 (排名不分先后) Microsoft SQL Server 企业级平台管理实践 SQL Server 2008数据库技术内幕 SQL Server性能调优实战 SQL S ...
- dotNET跨平台相关文档整理
一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...
- 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
HostingEnvironment是承载应用当前执行环境的描述,它是对所有实现了IHostingEnvironment接口的所有类型以及对应对象的统称.如下面的代码片段所示,一个HostingEnv ...
- virtualbox linux虚拟机相关
linux虚拟机设置为静态IP 在virtualbox中安装好linux虚拟机后,如果采用的是NAT方式的话,linux虚拟机默认采用dhcp方式自动上网,而且用的是NetworkManager服务而 ...
- WebGIS中等值面展示的相关方案简析
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 等值面是气象.环保等相关项目上常用到的效果展示.在传统的CS项 ...
- .NET同步与异步之相关背景知识(六)
在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...
- zookeeper集群的搭建以及hadoop ha的相关配置
1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...
随机推荐
- postman功能介绍
- SSL (Secure Sockets Layer)
本文转载自SSL (Secure Sockets Layer) TLS简介 The Transport Layer Security (TLS) protocol aims primarily to ...
- 2021-2-22:请你说下 CAP 理论并举例
CAP CAP 理论是分布式系统中的一个老生常谈的理论了,最早由 Eric Brewer 在一个讲座中提出.在这个讲座中,在传统 ACID 理论以及当时比较流行但是比较抽象的的设计指导理论 BASE ...
- ElasticSearch 搜索模板与建议
公号:码农充电站pro 主页:https://codeshellme.github.io Search APIs 用于搜索和聚合存储在 ES 中的数据. 1,搜索模板 Template Search ...
- 不同浏览器CSS样式不兼容问题
一句话,我想的太复杂了.向朋友请教才了解到,其实只要加个判断即可,首先获取到浏览器的基本信息,像什么版本啊,名称啊.默认语言啊等等,然后根据不同浏览器默认加载不同CSS样式即可,获取浏览器版本的连接如 ...
- Vue中Jsx的使用
什么是JSX? JSX就是Javascript和XML结合的一种格式.React发明了JSX,利用HTML语法来创建虚拟DOM.当遇到<,JSX就当HTML解析,遇到{就当JavaScript解 ...
- 第45天学习打卡(Set 不安全 Map不安全 Callable 常用的辅助类 读写锁 阻塞队列 线程池)
Set不安全 package com.kuang.unsafe; import java.util.*; import java.util.concurrent.CopyOnWriteArray ...
- Qstring和String的区别
QString qTest; std::string sTest = qTest.toStdString(); qTest = QString::fromStdString(sTest); //进入两 ...
- 【产品设计】linux产品设计总结笔记
Linux 预研产品设计 产品的目的: 1.综合集团内部重复性开发的工作,将多种操作系统统一到科东统一负责 2.明确技术在哪些设备上是可行的,再去拓展.一开始不做平台化产品 3.软件规划需要结合硬 ...
- 剑指 Offer 53 - II. 0~n-1中缺失的数字 + 二分法
剑指 Offer 53 - II. 0-n-1中缺失的数字 Offer_53 题目详情 java代码 package com.walegarrett.offer; /** * @Author Wale ...