我正在使用ElasticSearch和JackRabbit(或...我正在嘗試)。 JackRabbit似乎取決於Lucene 3.6.x,ElasticSearch取決於4.3.1。我正在使用Maven和JBoss 7.1.1。我在類路徑中獲得了Lucene 4.3.1,但是隨後在日誌中由於JackRabbit需要使用舊版Lucene中的某些內容而導致日誌文件突然崩潰。如何依賴兩個不同版本的庫?
我該如何解決這個問題?
我正在使用ElasticSearch和JackRabbit(或...我正在嘗試)。 JackRabbit似乎取決於Lucene 3.6.x,ElasticSearch取決於4.3.1。我正在使用Maven和JBoss 7.1.1。我在類路徑中獲得了Lucene 4.3.1,但是隨後在日誌中由於JackRabbit需要使用舊版Lucene中的某些內容而導致日誌文件突然崩潰。如何依賴兩個不同版本的庫?
我該如何解決這個問題?
你將需要採取衝突庫,你想使用(彈性搜索和jackrabbit)和make both into jboss as7 modules。使用jboss 7模塊化類加載,您可以將它們中的每一個與其自己的依賴項「包含」爲一個單獨的模塊,並僅向您的應用程序公開您使用的api。
它有點複雜(完整的文檔here),但將允許你讓他們每個人都使用他們自己的lucene版本 - 他們將被打包到一個模塊中,幷包含所有的依賴關係樹。
編輯 - 關於如何僅輸出te jboss modules documentation中某些模塊內容的一些信息。您要確保不輸出任何模塊的lucene
您可以創建兩個自定義類加載器實例,並使用其中的一個加載ElasticSearch類,並使用另一個加載JackRabbit。第一個必須從Lucene 3.6.x jar,另一個從v.4.3.1 jar
Okey,所以我應該在JBoss中安裝ElasticSearch和Jackrabbit,然後我可以使用兩個不同的版本? – LuckyLuke
但是,如果您查看http://mvnrepository.com/artifact/org.elasticsearch/elasticsearch/0.90.2的所有依賴關係,是否意味着我必須將它們都安裝爲模塊? – LuckyLuke
@ LuckyLuke-您可以安裝彈性搜索及其所有依賴項(因此鏈接到該列表中的所有內容)作爲單個jboss模塊,這隻會暴露彈性搜索。有一個例子如何做到這一點在這裏流口水 - http://www.samaxes.com/2012/11/running-drools-5-4-0-final-as-a-jboss-as-7-module/ ,只是爲了看看他們如何列出所有drools的依賴關係 – radai