Solr升级9.8.0启动异常UnsupportedOperationException known Lucene classes

发布于:2025-08-01 ⋅ 阅读:(16) ⋅ 点赞:(0)

需要使用solr的向量化功能。作为一个.Neter,将Solr从7.7.0升级到9.8.0的踩坑记录。

1.升级基础镜像

将DockerFile的

FROM solr:7.7.0

调整成

FROM solr:9.8.0

喔嚯,启动失败。

2.升级自定义Plugins的jar包

修改Pom.xml文件,将对应jar包都升级到9.8.0。满心欢喜继续启动容器。接着就异常了。
在这里插入图片描述

java.lang.UnsupportedOperationException: VectorizationProvider is internal and can only be used by known Lucene classes.
org.apache.lucene.codecs.Codec: Provider org.apache.lucene.codecs.lucene99.Lucene99Codec could not be instantiated

啥?内部类不能初始化?啥不是已知的Lucene类?难道现在solr不支持自定义token?这么强大有用的功能不应该啊!!!
继续调整其他的看看。

3.升级配置文件

3.1 jetty.xml

solr9.8对应的好像是jetty10。之前是jetty9。启动一个默认solr9.8.0容器。进入容器,复制黏贴搞定。

3.2 solrconfig.xml

有许多自定义配置,调整一下下面的再说。

<luceneMatchVersion>9.8.0</luceneMatchVersion>

4. 好像跑起来了

进度2的问题卡了一天,问了gpt可能还搞错方向了。指示java升级之后Plugin啥安全限制,需要加配置。

SOLR_OPTS="$SOLR_OPTS  --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=org.apache.lucene/internal.vectorization=ALL-UNNAMED" \

配了半天没效果。下班回家。
今天早上来继续看。偶然之间,运气比较好。看到
在这里插入图片描述
solr和lucene的版本不是一一对应的。lucene版本好像高一点。不知道前人为啥要单独引入lucene的包,直接引入solr包应该就ok了。调整一下lucene的包版本。启动起来了。
UnsupportedOperationException known Lucene classes,看起来还是版本不对导致的。估计再pom里面移除lucene也ok,有空试试。


网站公告

今日签到

点亮在社区的每一天
去签到