运行CircuitSim Linux可执行文件时遇java.lang.NoClassDefFoundError错误求助
问题描述
- 下载了CircuitSim 1.6.2版本的Linux可执行文件,选这个版本是为了规避Java版本过高的问题
- 当前Java版本信息:
$ java -version openjdk version "11.0.23" 2024-04-16 OpenJDK Runtime Environment (build 11.0.23+9-post-Ubuntu-1ubuntu122.04.1) OpenJDK 64-Bit Server VM (build 11.0.23+9-post-Ubuntu-1ubuntu122.04.1, mixed mode, sharing)
- 已将下载文件设为可执行权限,终端执行
./CircuitSim1.6.2后出现报错:
Error: Could not find or load main class com.ra4king.circuitsim.gui.CircuitSim Caused by: java.lang.NoClassDefFoundError: javafx/application/Application
- 猜测该问题和StackOverflow相关帖子有关,但因不熟悉Java技术,看不懂帖子内容,也不确定帖子里的方案是否适用于直接运行可执行文件的场景,需要运行帮助
解决方案
- 第一步:安装OpenJFX运行时
Ubuntu系统下直接执行:sudo apt install openjfx - 第二步:修改运行命令
Java 11及以后版本不再内置JavaFX,需要手动指定模块路径和依赖模块。OpenJFX的库路径通常为/usr/share/openjfx/lib,用以下命令运行程序:
如果java --module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.fxml,javafx.graphics -jar CircuitSim1.6.2CircuitSim1.6.2是启动脚本,也可以编辑它,把里面的java命令替换成上述带参数的命令,之后就能直接用./CircuitSim1.6.2启动。
原因说明
报错核心是CircuitSim的GUI依赖JavaFX,但Java 11开始,JavaFX不再作为JDK的默认组件,运行时找不到对应类文件,必须手动引入JavaFX模块才能正常启动。
内容的提问来源于stack exchange,提问作者Addem
相关产品推荐
相关产品推荐

