我正在使用 ElasticSearch 和 JackRabbit(或者......我也在尝试)。JackRabbit 似乎依赖于 Lucene 3.6.x 而 ElasticSearch 依赖于 4.3.1。我正在使用 Maven 和 JBoss 7.1.1。我在类路径上获得了 Lucene 4.3.1,但是由于 JackRabbit 需要旧 Lucene 的某些东西,所以 h*** 在日志中出现了松动。
我该如何解决这个问题?
我正在使用 ElasticSearch 和 JackRabbit(或者......我也在尝试)。JackRabbit 似乎依赖于 Lucene 3.6.x 而 ElasticSearch 依赖于 4.3.1。我正在使用 Maven 和 JBoss 7.1.1。我在类路径上获得了 Lucene 4.3.1,但是由于 JackRabbit 需要旧 Lucene 的某些东西,所以 h*** 在日志中出现了松动。
我该如何解决这个问题?
您将需要使用您希望使用的冲突库(elastic search 和 jackrabbit)并将两者都制作成 jboss as7 模块。使用 jboss 7 模块化类加载,您可以“包含”它们中的每一个,并将其作为单独的模块具有自己的依赖项,并仅向您的应用程序公开您使用的 api。
它有点复杂(这里有完整的文档),但允许你让他们每个人都使用他们自己版本的 lucene - 他们每个人都将被打包到一个包含所有理论或依赖树的模块中。
编辑- 在 te jboss 模块文档中有更多关于如何仅导出模块内容的信息。您要确保不要将 lucene 从任何模块中导出
您可以创建两个自定义类加载器实例,并用其中一个加载 ElasticSearch 类,用另一个加载 JackRabbit。第一个必须从 Lucene 3.6.x jar 加载类,另一个来自 v.4.3.1 jar