2017-03-29 3 views
0

Ich arbeite an einem Projekt, das gleichzeitig mit Elasticsearch 5.2.1 und Neo4j 3.1.0 verbindet. Diese beiden Pakete verwenden beide Lucene, aber leider inkompatible Versionen. Elaticseach benötigt Lucence 6.4.1 und Neo4j arbeitet mit Lucene 5.5.0.Wie haben Sie mehrere Versionen desselben Pakets wie die indirekten Abhängigkeiten eines Projekts?

Als Ergebnis habe ich Laufzeitfehler, da einige der Klassen inkompatible Signaturen haben. Gibt es eine Möglichkeit, Elasticsearch und Neo4j (mit den gegebenen Versionen) in einem Projekt zu haben?

Was ich versuche zu tun ist, Elasticsearch Paket zu this project hinzuzufügen. Und hier sind die Elasticsearch Abhängigkeiten, die ich hinzugefügt:

<dependency> 
     <groupId>org.elasticsearch</groupId> 
     <artifactId>elasticsearch</artifactId> 
     <version>5.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.elasticsearch.client</groupId> 
     <artifactId>transport</artifactId> 
     <version>5.2.1</version> 
    </dependency> 

Wie kann ich diese zwei schön nebeneinander zu spielen?

+0

nicht möglich von dem, was ich weiß. Sie können eine Version von beiden verwenden, die kompatible Versionen von Lucene haben. – Sandeep

+0

Aber ich brauche die neuesten Versionen von beiden !!! – Mehran

+0

Müssen Sie sie wirklich in einem einzigen Projekt haben, das nur eine einzelne Pom-Datei enthält? – khmarbaise

Antwort

0

Jede Kombination von jar sollte in einem separaten jar mit Abhängigkeiten oder einem Krieg gepackt sein und diese sollten nicht denselben Parent Classloader teilen, so dass eine geladene Klasse, die in zwei verschiedenen Versionen des jar mit Abhängigkeiten oder einem Krieg existiert, geladen wird durch einen eindeutigen Klassenlader.

+0

Können Sie mir bitte zeigen, wie ich Ihre Lösung implementieren kann? – Mehran

Verwandte Themen