Java 17 中找不到 JavaFX 的解决方法

这篇具有很好参考价值的文章主要介绍了Java 17 中找不到 JavaFX 的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

起因

最近在学习 Paul Deitel 和 Harvey Deitel 编写的 Java 编程入门教材《Java: How to Program - Early Objects 11th Edition》

Java 17 中找不到 JavaFX 的解决方法

本书豆瓣页面链接

其中第 1 章第 1.10 节给出一个简易画板示例程序,是一个 JavaFX GUI 程序

其目录结构如下

Java 17 中找不到 JavaFX 的解决方法

按书上给的命令 javac *.java 编译时出现如下错误,编译失败

Java 17 中找不到 JavaFX 的解决方法

以上错误皆可统一归结为一个源头:编译器找不到 JavaFX 包

错误原因

本书使用的 Java 版本是 Java 8

而我使用的是 Java 17

然而从 Java 11 开始,JavaFX 包就不再被包含到 JDK 里

解决办法

第一步:下载 OpenJFX 包

OpenJFX 是 Oracle 将 JavaFX 从 JDK 中分离出来后,维护的一个开源版 JavaFX

首先来到 OpenJFX 主页,点击 Download

Java 17 中找不到 JavaFX 的解决方法

跳转到 Gluon 维护的 JavaFX 下载页面

向下滚动,选择要下载的版本。这里有一个问题:如果想要免费使用,你只能下载与当前最新 Java 版本号相同的 JavaFX 包,或者下个 Java 版本的预览包

例如,我使用的是 Java 17,但目前(2023年1月)最新的 Java 版本是 19,那么我没法免费使用 JavaFX 17,只能下载 JavaFX 19,网页会在一个支付页面和本页之间无限循环跳转

但这个问题无关紧要,因为 JavaFX 包向后兼容,Java 17 可以用 Java 19 的包

依次选好 JavaFX 版本、操作系统、指令集架构、类型一栏选 SDK,然后点击 Download

Java 17 中找不到 JavaFX 的解决方法

下载下来的是一个 .zip 格式压缩包,解压后打开,发现目录下只有一个文件夹

Java 17 中找不到 JavaFX 的解决方法

把这个文件夹移动到一个你喜欢的位置,记住这个位置

第二步:设置环境变量

如果想让 Java 编译器在编译时找到 JavaFX 包,那么需要在编译时通过编译选项 --module-path 指定好 JavaFX 包所在的路径。

但路径太长,编译时输入很麻烦。为了方便,我们给这个路径设置一个环境变量来指代它,到时直接用环境变量名即可。

打开“Windows设置”,点击左上角“系统”,点击左侧边栏最底下“关于”,找到右侧边栏“相关设置”,点击“高级系统设置”

弹出窗口,点击“环境变量”

弹出窗口,找到下方“系统变量”,点击“新建”

Java 17 中找不到 JavaFX 的解决方法

起一个变量名,最好只使用大写字母和下划线,方便你自己识别,我这里起名 JFX_PATH

然后点击“浏览目录”,弹出窗口,还记得上一步你把 JavaFX SDK 放在哪里吗?找到它,打开,选中 lib 文件夹,点击“确定”

然后“确定”,关闭环境变量窗口

环境变量不是即时生效的,需要注销或者重启,才可生效,注意:注销或重启之前一定要保存好电脑上正在进行的其他工作!

第三步:重新编译画板程序 & 运行

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

使用 PowerShell

执行编译命令如下

javac --module-path $env:JFX_PATH --add-modules javafx.controls javafx.fxml *.java

如果没有报错,且目录下生成 .class 文件,执行运行命令如下

java --module-path $env:JFX_PATH --add-modules javafx.controls javafx.fxml Painter

使用命令行窗口(cmd)

执行编译命令如下

javac --module-path %JFX_PATH% --add-modules javafx.controls javafx.fxml *.java

如果没有报错,且目录下生成 .class 文件,执行运行命令如下

java --module-path %JFX_PATH% --add-modules javafx.controls javafx.fxml Painter

Java 17 中找不到 JavaFX 的解决方法

成功!

需要改进之处

我们发现这样输命令还是太长,太麻烦,可以通过给命令设置别名,或者在 PowerShell 的配置文件里设置 function 来缩短命令,省去不必要的打字环节

具体方法不在此赘述,可自行搜索

(本文完)文章来源地址https://www.toymoban.com/news/detail-490364.html

到了这里,关于Java 17 中找不到 JavaFX 的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA中找不到maven插件Plugin‘ ‘ not found 解决

    1.1首先要找设置 File--Settings--Build,..--Maven  1.2然后就继续 File--Invalidata Caches    点击这个键, 再 开启idea 然后在 设置pom.xml文件的代码  演示: 然后就OK了

    2024年02月11日
    浏览(30)
  • 解决在jupyter notebook中找不到pip安装后的库

    解决在jupyter notebook中找不到已安装的库

    2024年02月13日
    浏览(77)
  • 解决Ubuntu有网卡但无法上网,且设置中找不到网卡

    系统为Ubuntu 22.04,运行在VMware Workstation 17 Pro中 无法上网,执行 ip addr ,网卡信息中显示 qdisc noop state DOWN group default Ubuntu的“ 设置-网络 “中 找不到网卡 重启系统,问题依然存在 使用systemctl重启NetworkManager,问题依然存在,并发现报错 failed to open /run/network/ifstate 删除虚拟机

    2024年01月20日
    浏览(28)
  • 如何简单的上手JavaFX17+?解决“缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序”等问题

    JavaFX是一个Java的一个ui库,但是自从java8以后,它很悲惨的被从OpenJdk中移除了,因此我们使用它来进行开发时,如果我们使用的是8以后的版本,经常会遇到一些问题。这里针对新手做一个简单的引导(悲,也许根本没新手来学吧) Fx的入门并不复杂,如果你学过其他的Ui库或

    2024年02月02日
    浏览(43)
  • IDEA Rogstry中找不到compiler.automake.allow.when.app.running问题解决

    网上大部分人教我们 先 File Settings 然后 勾选 Build 下的 Compiler中的 Build project automatically 这些步骤都不会有问题 然后就会让我们 ctrl + shift +alt + / 点 Rogstry 打开后 我人就麻了 根本没有什么 compiler.automake.allow.when.app.running 也不用慌 我们打开 File Settings 左侧菜单选择 Advanced Set

    2024年02月07日
    浏览(29)
  • 计算机中找不到msvcp140.dll丢失怎么弄?程序员都是这样解决的

    msvcp140.dll是Microsoft Visual C++ 2015 Redistributable Package的一部分,它是一个运行时库文件,提供了许多C++标准库函数的实现。如果缺少这个文件,可能会导致一些程序无法正常运行,例如一些游戏、应用程序等。为了解决这个问题,下面小编分享5种可以解决的方法。 一、丢失msv

    2024年02月11日
    浏览(48)
  • 解决PyCharm中导入cv2,函数能正常使用,但不显示函数引用,并高亮提示在‘__init__.py‘中找不到引用

    笔者在PyCharm中使用的解释器是anaconda3中包含的 Python 3.10 ,在Anaconda Prompt中输入以下内容安装opencv-python和opencv-contrib-python: 由于并未指定opencv安装版本,所以默认安装的是最新版本opencv_python-4.7.0.72-cp37-abi3-win_amd64.whl和opencv_contrib_python-4.7.0.72-cp37-abi3-win_amd64.whl,其中cp37表示是

    2024年02月14日
    浏览(33)
  • 【springboot】idea报错:java:无效的目标发行版:17 解决方法

    运行项目的时候出现,下面这个错误,版本无效。 出现这个错误的原因就是版本不匹配的问题,我电脑并没有装java17,我电脑装的是java15 但我的idea里面没有15这个选项,就很奇怪,我怀疑是idea的问题,这告诉我们大家一定要支持正版。 我重新下载了java17,配置好路径。然后

    2024年02月15日
    浏览(33)
  • nginx无法启动,任务管理器中找不到进程

    问题描述:在nginx官网下载压缩包并解压后,启动nginx.exe  ,后台会发生系统中断,任务管理器中找不到nginx进程,且无端口占用. 解决方法:下载的nginx目录中没有logs文件夹,新建logs文件夹并配置好文件目录后,在error中发现错误: 2024/03/28 00:11:01 [emerg] 13648#4044: CreateDirectory() \\\"C:nginx/tem

    2024年04月28日
    浏览(41)
  • IDEA Error:java: 无效的源发行版: 17的错误解决方法

    当我们从Gitee或者Github拉取代码到IDEA时,跑项目的时候,发现报错:java:无效的目标发行版:17 原因可能在于我们IDEA中配置的Java版本和原项目的配置不同,我们可以通过以下方法来解决。 查看项目的pom.xml文件的配置,看原项目使用的java版本,我这里的项目Java版本是17 接下

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包