NetBeans 12.5中使用JDK11启动GlassFish 6.2.2失败如何解决?
解决方案
问题核心原因
NetBeans 12.5内置的GlassFish适配模块存在版本校验bug,会将GlassFish 6.2.x版本误判为不支持JDK11的旧版本,同时会强制注入错误的启动参数,才会触发你遇到的两类报错。
分步操作
第一步:修正GlassFish服务器的JDK绑定
- 打开NetBeans,切换到「服务」标签页,找到「服务器」分类下的GlassFish 6.2.2条目,右键选择「属性」
- 在弹出的属性窗口中,找到「Java平台」下拉选项,不要选择默认的JDK11,手动选中你本地已安装的正式版JDK11(需为OpenJDK/OracleJDK官方正式版,不要使用定制修改版JDK);如果下拉列表中没有对应选项,点击「管理平台」先将本地的JDK11添加到NetBeans平台列表后再选择。
第二步:固定GlassFish的JDK启动路径
- 打开本地GlassFish 6.2.2的安装目录,进入
glassfish/config文件夹 - 编辑对应系统的环境配置文件:
- Linux/macOS系统:编辑
asenv.conf,末尾添加一行AS_JAVA="你的JDK11安装绝对路径" - Windows系统:编辑
asenv.bat,末尾添加一行set AS_JAVA=C:\你的JDK11安装绝对路径
- Linux/macOS系统:编辑
- 保存文件后返回NetBeans的GlassFish属性页,清空「VM选项」输入框中的所有默认参数,留空即可。
第三步(可选,前两步失效时操作):禁用版本校验逻辑
- 关闭NetBeans,打开NetBeans安装目录下的
enterprise/modules文件夹 - 找到
org-netbeans-modules-j2ee-sun-appsrv81.jar文件,先备份到其他目录避免修改失败 - 用压缩工具打开该jar包,找到
org/netbeans/modules/j2ee/sun/appsrv81/ServerInstance.class字节码文件,将其中版本校验逻辑的最高支持版本号从6.1修改为6.2后保存替换 - 重启NetBeans即可正常启动GlassFish。
报错说明
你尝试用JDK8启动时报错是正常现象:GlassFish 6.2.x基于Jakarta EE 9.1开发,最低运行要求就是JDK11,报错中的--add-opens是JDK9及以上版本才支持的模块参数,JDK8无法识别,无需再尝试JDK8启动方案。
内容的提问来源于stack exchange,提问作者Filou
相关产品推荐
相关产品推荐

