GlassFish 5无法启动,疑Java版本兼容问题求助
GlassFish 5启动抛出NullPointerException的排查与解决
问题概述
- 运行环境:已完全更新的Mx Linux系统,OpenJDK 11.0.16
- 现象:Tomcat运行正常,但执行
asadmin start-domain domain1时抛出NullPointerException,asadmin list-applications显示服务器未启动,已排除端口冲突问题。
错误日志:
$ asadmin start-domain domain1 Exception in thread "main" java.lang.NullPointerException at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.initializeServiceLocator(AbstractModulesRegistryImpl.java:152) at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.newServiceLocator(AbstractModulesRegistryImpl.java:144) at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:218) at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:224) at com.sun.enterprise.module.single.StaticModulesRegistry.createServiceLocator(StaticModulesRegistry.java:88) at com.sun.enterprise.admin.cli.CLIContainer.getServiceLocator(CLIContainer.java:217) at com.sun.enterprise.admin.cli.CLIContainer.getLocalCommand(CLIContainer.java:255) at com.sun.enterprise.admin.cli.CLICommand.getCommand(CLICommand.java:231) at com.sun.enterprise.admin.cli.AdminMain.executeCommand(AdminMain.java:371) at com.sun.enterprise.admin.cli.AdminMain.doMain(AdminMain.java:306) at org.glassfish.admin.cli.AsadminMain.main(AsadminMain.java:57)
Java版本信息:
$ java -version openjdk version "11.0.16" 2022-07-19 OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1) OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, mixed mode, sharing)
核心原因
GlassFish 5的官方支持Java版本为Java 8,Java 11属于非官方兼容版本,模块初始化逻辑在Java 11环境下存在兼容性问题,直接触发了NullPointerException。
解决步骤
1. 安装OpenJDK 8
在Mx Linux系统中通过包管理器安装:
sudo apt update sudo apt install openjdk-8-jdk
2. 为GlassFish指定Java 8环境
有两种配置方式:
临时切换(仅当前终端生效):
启动GlassFish前执行以下命令切换Java环境:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH之后执行
asadmin start-domain domain1尝试启动。永久配置:
编辑GlassFish安装目录下的glassfish5/config/asenv.conf文件,添加或修改以下内容:AS_JAVA=/usr/lib/jvm/java-8-openjdk-amd64保存后重新启动GlassFish即可。
3. 额外检查:目录权限
确保当前用户对GlassFish安装目录及domain1目录拥有读写权限,避免因权限不足导致模块加载失败:
sudo chown -R $USER:$USER /path/to/glassfish5
内容的提问来源于stack exchange,提问作者Vinicius Moreira
相关产品推荐
相关产品推荐

