Solr 8.10.1配置DataImportHandler报NoClassDefFoundError问题求助
解决方案
报错根本原因
Solr 8.x 版本起DataImportHandler(DIH)已从核心模块剥离,你将DIH相关jar包放入server/lib目录会触发类加载器隔离问题:server/lib属于容器级类加载路径,加载DIH时无法识别core级的SolrCoreAware类,因此抛出类未找到错误。
操作步骤(全局生效适配所有core)
- 停止运行中的Solr服务,删除你之前复制到
C:\Databases\solr-8.10.1\server\lib、C:\Databases\solr-8.10.1\server\solr\mytest\lib目录下的两个DIH相关jar包,仅保留安装包根目录dist文件夹下原生的solr-dataimporthandler-8.10.1.jar和solr-dataimporthandler-extras-8.10.1.jar。 - 找到你创建core时使用的配置集目录:
C:\Databases\solr-8.10.1\server\solr\configsets\sample_techproducts_configs\conf\solrconfig.xml,修改配置文件:- 删除原有错误的
lib配置,新增以下全局通用的DIH加载配置:
<lib dir="${solr.install.dir}/dist/" regex="solr-dataimporthandler-.*\.jar" />- 检查
/dataimport请求处理器的配置,将config值修改为你实际的配置文件名,你本地存放的是data-config.xml,修正后配置如下:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler> - 删除原有错误的
- 将SQL Server官方JDBC驱动jar包(如
mssql-jdbc-9.4.1.jre8.jar)放入C:\Databases\solr-8.10.1\dist目录,后续其他第三方依赖jar也可统一放入该目录。 - 对于已经创建好的
mytestcore,同步修改C:\Databases\solr-8.10.1\server\solr\mytest\conf\solrconfig.xml,和上面配置集的修改内容保持一致。 - 重新启动Solr服务:
C:\solr-8.10.1\bin\solr start -p 8983 - 访问Solr管理后台的
mytestcore页面,进入Logging标签确认无类加载报错后,再执行全量导入操作即可。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

