2016-10-21 4 views
1

Ich habe eine Anforderung, wo ich auf zwei verschiedene Versionen der gleichen JAR in meiner Anwendung zur Laufzeit beziehen müssen: fop.jar (v1.0) in bestimmten Fällen und fop 1.1.jar in bestimmten anderen Fällen .Verschiedene Versionen der gleichen JAR zur Laufzeit

Wie kann ich das erreichen?

Ich kann es nicht dynamisch laden, da meine EAR nicht ohne diese kompiliert wird.

+3

Das Wichtigste ist: das erfordert definitiv, dass Sie Custom Class Loader verwenden; damit ein Teil Ihrer Anwendung mit der Klasse X v1.0 ausgeführt wird; und ein anderer verwendet Klasse X v1.1. Das ist möglich, erfordert aber sorgfältiges Entwerfen. Ich würde lieber die Gehirnleistung dafür ausgeben, Wege zu finden, um ** nicht ** die Anforderung zu haben, zwei verschiedene Versionen derselben JAR zu verwenden. – GhostCat

+0

Danke für Ihre Antwort. Dies ist, was wir versuchen zu tun, aber die alte Codebasis hat viele inkompatible xsl, die in kurzer Zeit schwer zu korrigieren ist. Ich sehe eine taktische Lösung, um zu erreichen, ohne Änderungen an der alten xsl vorzunehmen. –

+1

Und Sie denken, dass das Aktivieren ** Ihrer alten Codebasis, um verschiedene Klassenlader zu verwenden, eine weniger riskante/zeitraubende Idee ist? Mein Bauchgefühl ist: das könnte noch härter sein. – GhostCat

Antwort

0

Ich habe dieses Problem gerade auf sehr hackische Weise gelöst. Ich brauchte Version 1.5 und 2 von pdfbox aus irgendeinem Grund. Also habe ich alle Inhalte der .jar-Datei in ein temporäres Verzeichnis extrahiert, dann mit Notepad ++ gesucht und in Dateien ersetzt, die ich org.apache durch urg.apache und org/apache durch urg/apache ersetzt habe (durcheinander geratene org.apache.commons, die ich nachträglich behoben) und dann die ersetzten Dateien in ein neues .jar gezippt. es Angebracht mit Maven mvn install: install-Datei -dfile = pdfbux-1.5.0.jar -DgroupId = urg.apache.pdfbox -DartifactId = PDFBox -Dversion = 1.5.0 -Dpackaging = jar

In Meine pom.xml Ich habe 2 Abhängigkeiten. Version 1.5 urg.apache Im Code unter Verwendung von 1,5 I Import urg.apache verwendet ...

Ich weiß, das ist ein verrückt Hack aber es hat mich gerettet viel Zeit

Verwandte Themen