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

从Solr8.4/Java11升级至9.2/17后,ScriptUpdateProcessorFactory使用问题

解决JDK12+版本下Solr ScriptUpdateProcessorFactory的使用问题

核心原因

JDK 12及以上版本移除了内置的Nashorn JavaScript引擎,而Solr默认依赖该引擎处理JS脚本,因此出现No ScriptEngine found by file extension: update-script.js报错。

具体解决步骤

  • 手动引入Nashorn引擎依赖
    下载兼容JDK17的Nashorn核心包(如org.openjdk.nashorn:nashorn-core:15.4),将jar包放入Solr的server/lib/ext目录,集群环境需同步部署到所有节点。

  • 确认脚本模块已启用
    在solrconfig.xml中检查是否已加载脚本模块的依赖包,确保存在以下配置:

    <lib dir="${solr.install.dir:../../../..}/contrib/scripting/lib" regex=".*\.jar" />
    <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-scripting-\d.*\.jar" />
    
  • 正确配置ScriptUpdateProcessorFactory
    在solrconfig.xml中配置更新处理器时,显式指定脚本引擎为nashorn,避免自动检测失败:

    <updateProcessor name="script" class="org.apache.solr.update.processor.ScriptUpdateProcessorFactory">
      <str name="script">update-script.js</str>
      <str name="scriptEngine">nashorn</str>
    </updateProcessor>
    
  • 验证配置有效性
    启动Solr后查看日志,若不再出现脚本引擎未找到的报错,则说明配置生效。

可选方案:若不想使用Nashorn,可替换为GraalVM JS等兼容的JavaScript引擎,只需将对应引擎的jar包放入Solr lib目录,并在配置中指定对应的引擎名称即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:02:12