java - 如何在Apache SOLR Cloud模式下加载原生库(.so)?

标签 java apache solr lucene

我编写了一个 SOLR 自定义查询解析器(org.apache.solr.search.QParser 的实现)。我的查询解析器使用一些第三方 jar。第三方 jar 之一需要 native 库(.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 中添加了 lib dir= "${solr.install.dir:../../../..}/lib/"

  2. 在 SOLR_HOME/bin/solr 文件中:

    SOLR_START_OPTS=“-Djava.library.path=$SOLR_TIP/lib/”

请帮忙。提前致谢。

最佳答案

最后,我找到了解决方案(归功于我的一位学长)。在云模式下运行时,请按照以下说明操作:

  1. SOLR_HOME 中创建 lib 目录并将 native-library(.so) 文件放在那里。
  2. SOLR_HOME/bin/solr 文件中,将此行添加到 SOLR_START_OPTS:

    SOLR_START_OPTS=“-Djava.library.path=$SOLR_TIP/lib/”

  3. 在每个节点库中创建 lib 文件夹(即 SOLR_HOME/example/cloud/node1/lib、SOLR_HOME/example/cloud/node2/lib)并将所有自定义插件 jar 放入这些新创建的 lib 文件夹。

  4. 以云模式重新启动 solr。

希望,这会有所帮助!

关于java - 如何在Apache SOLR Cloud模式下加载原生库(.so)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42138963/

相关文章:

java - 卡牌游戏与处理的 war

java - 如何使用 java 读取 spark 中的 xls 和 xlsx 文件?

php - 让 SSL 在 Xampp 中工作 - 访问禁止错误

regex - 有关 htaccess 的书籍

java - 如何为 GetSolr 设置 StandardSSLContextService

java - 从文件读取后添加数组中的数字总和

java - 如何使用 Rx 运行并发任务队列?

apache - 如何使用.htaccess规则删除百分比编码的斜杠?

solr - 如何在solr的数据配置文件中添加小于和大于

mysql - 在 solr import 中关闭 ResultSet 后不允许操作