Behinder.jar高版本java下无法运行的问题

Behinder.jar高版本java下无法运行的问题

问题描述

image-20220821101124384

原因

高版本java不再内置javafx

解决方案

https://gluonhq.com/products/javafx/

自行下载安装,解压

//注意要选择对应版本的javafx,高版本的javafx在低版本java下无法正常运行

image-20220821101252533

复制lib路径

在Behinder文件夹下,创建start.bat脚本

start javaw --module-path "C:\Program Files\Java\javafx-sdk-15.0.1\lib" --add-modules=javafx.base --add-modules=javafx.controls  --add-modules=javafx.fxml  --add-modules=javafx.graphics  --add-modules=javafx.media  --add-modules=javafx.swing  --add-modules=javafx.web -jar Behinder.jar
start start 命令用来启动一个单独的窗口来运行指定的程序(如:exe 文件)或命令(如:批处理脚本 *.bat)。


javaw.exe是相似的和java.exe  是一个win32的GUI应用,应用提供自己的GUI窗口,不启用控制台。


ModulePath 的概念和ClassPath 类似,不过 ModulePath 中的 Jar 包或 Jmod 文件被当作 Module 来处理,而 ClassPath 中的的 Jar 包,无论是否模块化都会被当作传统 Jar 包处理。

Java9 制定了以下规则以保证旧 Jar 包和项目可以无缝的迁移到新的 Java 版本上:

所有 ClassPath 下的 Jar 包,Class,资源文件等都在一个 Unnamed Module 中
Unnamed Module 的 Class 可以看到和使用所有 Module Path 中导出的 Package,所有 Class Path 中的 Package,以及所有 JDK 系统模块的 Package
ModulePath 下普通模块中的 Class 只能看到 module-info 中定义的依赖模块中导出的 Package,也看不到 Unnamed Module 中的内容。
根据这些规则,如果项目还是使用 ClassPath,则对项目来说没有影响,项目也不需要定义模块依赖。另外,项目的依赖可以放在 ClassPath 上,也可以放在 ModulePath 上,区别是放在 ModulePath 上的话不能使用模块中未标记为导出的 Package。

这里需要解释一下 Unnamed Module。Unnamed Module 是一个特殊的,自动生成的 Module,所有 ClassPath 下的内容在 Java9 中都是挂在 Unnamed Module 名下的。对于同一个 ClassLoader,只有一个 Unnamed Module。

https://juejin.cn/post/6844903568059662349

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值