如何在Apache SOLR云模式下加载本机库(.so)?

zaq34kh6  于 2023-03-02  发布在  Solr
关注(0)|答案(2)|浏览(167)

我写了一个SOLR自定义查询解析器(org.apache.solr.search.QParser的实现)。我的查询解析器使用了一些第三方jar。其中一个第三方jar需要一个原生库(.so文件)才能工作。这个插件在非云模式下运行solr时工作正常,但当我在云模式下运行它时,SOLR抛出了以下错误:

java.lang.UnsatisfiedLinkError: Native Library /opt/solr-6.2.0/lib/xyz.so already loaded in another classloader

我将所有第三方和查询解析器jar和.so文件保存在SOLR_HOME/lib目录中,并修改了:
1.在solrconfig.xml中添加了库目录=“${solr.安装目录:../../../..}/lib/”
1.在SOLR_HOME/bin/solr文件中:
SOLR_START_OPTS=“-数据Java库路径=$SOLR_提示/库/”
拜托,先谢了。

kkbh8khc

kkbh8khc1#

最后,我找到了这个问题的解决方案(这要归功于我的一位学长)。当在云模式下运行时,请按照以下说明操作:
1.在SOLR_HOME中创建lib目录,并将本机库(. so)文件放在那里。
1.在SOLR_HOME/bin/solr文件中,将此行添加到SOLR_START_OPTS
SOLR_START_OPTS ="-数据Java库路径= $SOLR_提示/库/"
1.在每个节点库中创建lib文件夹(即SOLR_HOME/example/cloud/node1/lib、SOLR_HOME/example/cloud/node2/lib),并将所有自定义插件jar放入这些新创建的lib文件夹中。
1.在云模式下重新启动solr。
希望,它会有帮助!

qfe3c7zg

qfe3c7zg2#

我挣扎与这个问题,以及找到了另一个解决方案,不需要触及开始选项。
我刚刚将<str name="sharedLib">${solr.install.dir}/contrib/my_lib,${solr.install.dir}/dist</str>添加到solr.xml(doc)中,然后solr.xml在启动时加载我的库,以便所有内核共享它。

相关问题