IDEA运行Glassfish 6.2.0出现UnsupportedClassVersionError如何解决
问题根因
- 第一个
UnsupportedClassVersionError报错:你使用的Glassfish版本≥6.0,该版本系列基于Java 11(类文件版本号55)编译,本身不支持JDK 8作为运行环境,仅修改系统全局JDK版本无法解决,因为IDEA中Glassfish的运行JRE是单独配置的。 - 第二个Glassfish 5部署报错:你安装的JDK 8版本≥8u231,Oracle在该版本更新中收紧了
sun.security.provider包下内部类的访问权限,Glassfish 5自带的旧加密实现没有适配该调整,导致权限访问失败。
可选解决方案
方案一:使用匹配的高版本组合(推荐,稳定性更高)
- 下载安装JDK 11或更高的LTS版本(如JDK 11、JDK 17)
- 打开IDEA顶部菜单
Run→Edit Configurations,找到你的Glassfish服务器配置项 - 在
Server标签页的JRE下拉选项中选择你安装的高版本JDK,保存配置 - 重新启动Glassfish并部署项目即可,项目如果是JDK 8编译的也可以在高版本JDK下正常运行
方案二:保留JDK 8,适配Glassfish 5
- 打开你的Glassfish 5安装目录,进入
glassfish5/glassfish/modules/路径 - 删除该路径下的
sunjce_provider.jar文件,该文件是Glassfish自带的旧加密实现,和高版本JDK 8自带的加密实现冲突 - 重启Glassfish,重新部署项目即可
- 如果删除文件后仍报错,可将JDK 8降级到8u221及之前的版本,也可解决冲突
注意事项
IDEA中服务器的运行JRE和系统全局的环境变量是独立配置的,修改系统Java版本不会影响IDEA内的服务器运行环境,每次调整JDK版本后都要检查服务器配置中的JRE路径是否匹配。
内容的提问来源于stack exchange,提问作者dogking
相关产品推荐
相关产品推荐

