从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
相关产品推荐
相关产品推荐

