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资源 ...
随机推荐
- Gitlab与Sonarqube整合-代码提交自动检测
目录 概述 准备工作 postgres sonarqube gitlab gitlab-runner Gitlab-runner容器 注册Gitlab-runner Sonarqube gitlab ...
- 后端程序员之路 29、Thrift
Apache Thrift是Facebook实现的一个高效的.支持多种编程语言的远程服务调用(RPC)框架. Apache Thrift - Homehttp://thrift.apache.org/ ...
- Flask:基本结构
在大多数标准中,Flask 都算是小型框架,小到可以称为"微框架".但是,小并不意味着它比其他框架的功能少.Flask 自开发伊始就被设计为可扩展的框架,它具有一个包含基本服务的强 ...
- Linux基本命令——系统管理和磁盘管理
转: Linux基本命令--系统管理和磁盘管理 Linux命令--系统管理和磁盘管理 一.系统管理 1.1 时间相关指令 <1> 查看当前日历: cal <2> 显示或设置时间 ...
- C#正则实现匹配一块代码段
最近项目,生成聚合网关,但是生成的网关文件中,存在着不必要的代码段,比如一个类A,类B等 之前一直使用手动删除,这么做劳民伤财,浪费时间,考虑使用正则写一个工具实现自动删除. 正则写法: string ...
- 干货满满-原来这才是hooks-React Hooks使用心得
序言 ---最后有招聘信息哦-React是一个库,它不是一个框架.用于构建用户界面的Javascript库.这里大家需要认识这一点.react的核心在于它仅仅是考虑了如何将dom节点更快更好更合适的渲 ...
- pyspider的环境安装
第一:确认自己的Python版本3.6.x(因该版本与pyspider较为适应,其他版本易出错) 如果不是3.6版本的,且想将版本替换成3.6版本的有以下处理方法: 1.再装一个3.6版本python ...
- Codeforces Round #538 D. Lunar New Year and a Wander
题面: 传送门 题目描述: Bob想在公园散步.公园由n个点和m条无向边组成.当Bob到一个未经过的点时,他就会把这个点的编号记录在笔记本上.当且仅当Bob走完所有的点,他才会停下来.这时,Bob的笔 ...
- python-实现链式栈
7 """ 8 用一个类来实现一个节点 9 """ 10 class Node(object): 11 def __init__(self, ...
- python实现顺序表
python实现顺序表可以有两中形式进行存储 列表 元组 其实简单来说,顺序表无非就是操作列表和元组的方法来对顺序表进行操作. 实例代码 7 class SqList: 8 def __init__( ...