2016-09-12 16 views
1

Ist es möglich, zwei Gläser unterschiedlicher Version zu betreiben, aber läuft auf verschiedenen Thread auf einer einzigen JVM. Wenn ja, bitte führe mich in die richtige Richtung.Zwei verschiedene Versionen von Gläsern in separaten Threads in einer einzigen JVM

+1

Nein, die zuletzt geladene Klassendatei wird diejenige sein, die ausgeführt wird. So werden die Klassen in JVM geladen – NullPointerException

+2

Sie können das haben, aber Sie müssen sich intensiv mit der Klassenladerhierarchie und den benutzerdefinierten Klassenlatern beschäftigen. –

+2

Sie benötigen keinen separaten Thread, Sie benötigen nur zwei ClassLoader. Oder Sie können ein Tool wie 'jarjar' verwenden, um den verschiedenen Versionen unterschiedliche Paketnamen zu geben. Es könnte jedoch viel einfacher sein, zwei JVMs zu haben und nur eine JAR-Version pro JVM zu haben. –

Antwort

5

Sicher, das ist sehr gut möglich - bei Verwendung mehrerer Instanzen ClassLoader. Das bedeutet: Wenn jeder Thread einen eigenen speziellen ClassLoader verwendet, könnten diese Threads mit "unterschiedlichen" Versionen der "gleichen" JAR-Datei arbeiten.

Aber ein Wort der Warnung: Dies ist wirklich ein fortgeschrittenes Thema, das Sie nicht in unbeschwerte kommen wollen! Wenn Sie wirklich daran interessiert sind, dorthin zu gehen, finden Sie weitere Informationen here.

Verwandte Themen