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

升级Liferay 7.4.3.132至Java21后ElasticSearch Sidecar启动失败求助

解决Liferay 7.4.3.132 + Java 21下ElasticSearch Sidecar启动的InaccessibleObjectException异常

这个异常是Java 9+模块系统的封装限制导致的——ElasticSearch Sidecar进程需要访问java.lang.invoke包,但Java 21默认未向未命名模块开放该权限。以下是针对性的解决步骤:

  • 定位ElasticSearch Sidecar的专属JVM配置
    Liferay内置的ElasticSearch Sidecar有独立的JVM配置,路径通常为:
    [Liferay安装目录]/osgi/modules/com.liferay.portal.search.elasticsearch7.impl-[具体版本号]/META-INF/elasticsearch/config/jvm.options
    若你之前用了jvm.options.d目录,可在该目录下新建自定义配置文件(比如es-sidecar-permissions.options)。

  • 添加模块权限开放参数
    在上述配置文件中添加以下JVM参数:

    --add-opens java.base/java.lang.invoke=ALL-UNNAMED
    --add-opens java.base/java.lang=ALL-UNNAMED
    

    注意:仅开放java.lang.invoke可能不足以覆盖ES内部的依赖,需同时开放java.lang包权限。

  • 验证配置生效状态
    启动Liferay后,查看ElasticSearch Sidecar的日志文件(路径:[Liferay数据目录]/logs/elasticsearch/liferay-elasticsearch.log),确认模块权限异常是否消失。若仍有问题,可通过进程管理工具(如jps -v)检查Sidecar进程的启动参数,确认上述--add-opens参数已被加载。

  • 补充主进程的JVM参数配置
    同时确保Liferay主进程的setenv.sh中也添加了必要的模块开放参数(主进程与ES Sidecar是独立进程):
    在JAVA_OPTS段添加:

    --add-opens java.base/java.lang.invoke=ALL-UNNAMED
    --add-opens java.base/java.lang.reflect=ALL-UNNAMED
    --add-opens java.base/java.util=ALL-UNNAMED
    
  • 额外排查点

    • 确认使用的Java 21是Liferay官方支持的版本(推荐OpenJDK 21正式版),避免预览版或修改版JDK的兼容性问题;
    • 检查自动数据库升级是否已完全完成,残留的数据库兼容性问题可能间接影响ES启动。

内容的提问来源于stack exchange,提问作者Komal Prasad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:00:00