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的相关问题的更多相关文章

  1. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  2. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  3. SQL Server相关书籍

    SQL Server相关书籍 (排名不分先后) Microsoft SQL Server 企业级平台管理实践 SQL Server 2008数据库技术内幕 SQL Server性能调优实战 SQL S ...

  4. dotNET跨平台相关文档整理

    一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...

  5. 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?

    HostingEnvironment是承载应用当前执行环境的描述,它是对所有实现了IHostingEnvironment接口的所有类型以及对应对象的统称.如下面的代码片段所示,一个HostingEnv ...

  6. virtualbox linux虚拟机相关

    linux虚拟机设置为静态IP 在virtualbox中安装好linux虚拟机后,如果采用的是NAT方式的话,linux虚拟机默认采用dhcp方式自动上网,而且用的是NetworkManager服务而 ...

  7. WebGIS中等值面展示的相关方案简析

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 等值面是气象.环保等相关项目上常用到的效果展示.在传统的CS项 ...

  8. .NET同步与异步之相关背景知识(六)

    在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...

  9. zookeeper集群的搭建以及hadoop ha的相关配置

    1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...

随机推荐

  1. Recycle 只显示一行BUG

    学习Recycle 两天了,照着网上的Adapter写了2个Demo,结果测试的时候发现,第一个Demo 显示.点击都正常,第二个Demo的Adapter合第一个一模一样,仅仅是类名不同,结果显示的时 ...

  2. Iterable object of JavaScript

    数组是可迭代的,所以数组可以用于for of,字符串也是可迭代的,所以字符串也可以用作for of,那么,对象呢? 试一试: var somebody = { start:0, end:100 } f ...

  3. 用cmd编译java程序

    此时D:****/WorkSpace/javaCode文件夹中有一个Hello.java程序(****为任意的位置,不重要) 1 public class Hello { 2 public stati ...

  4. 边缘计算k8s集群之SuperEdge

    什么是边缘计算? 边缘计算,是指在靠近物或数据源头的一侧,采用网络.计算.存储.应用核心能力为一体的开放平台,就近提供最近端服务.其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务.应 ...

  5. 授权认证登录之 Cookie、Session、Token、JWT 详解

    一.先了解几个基础概念 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份. 互联网中的认证: 用户名密码登录 邮箱发送登录链接 手机号接收验证码 只要你能收到邮箱/验证码,就 ...

  6. CSharp使用ANTLR4生成简单计算Parser

    ANTLR简介 ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, pr ...

  7. 后端程序员之路 38、Scala入门

    Scala 是 Scalable Language 的简写,是一门多范式的编程语言. 语言特性:1.面向对象,所有值都是对象,类可以继承和组合:2.函数式,支持闭包,支持柯里化等等:3.静态类型,支持 ...

  8. spring-Cloud初步依赖

    <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...

  9. MySql_176. 第二高的薪水 + limit + distinct + null

    MySql_176. 第二高的薪水 LeetCode_MySql_176 题目描述 题解分析 代码实现 # Write your MySQL query statement below select( ...

  10. Kafka SASL ACL配置踩坑总结

    源起:工程现阶段中间件采用的是kafka.满足了大数据的高吞吐,项目间的解耦合,也增强了工程的容错率与扩展性.但是在安全这一块还有漏洞,kafka集群中,只要网站内的任何人知道kafka集群的ip与t ...