You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:50:23