Bewältigung von Konflikten auf java-classpath

Ich setze meinen Kontext :

Ich habe zwei Java-Programme, die auf einem einzigartigen Weblogic Server : Programm A und Programm B.
Diese werden gestartet, indem zwei ksh :

programA.ksh und programB.ksh

Beide brauchen C.jar aber in verschiedenen Versionen (aber mit genau der gleichen Paket-und Klassen) :

  • Programm Ein muss C-1.0.jar
  • Programm B müssen C-2.0.jar

Ich genau, dass beide Programme dieselbe weblogic-classpath.

So, mein classpath enthält in dieser Reihenfolge :

.....

C-1.0.jar

C-2.0.jar

.....

Wie kann ich tun, dass jedes Programm findet seine gute Bibliothek ?

Zum Beispiel, mit meiner aktuellen Konfiguration, Programm B, so wird immer C-1.0.jar statt C-2.0.jar aufgrund der vorrangigen position auf dem classpath.

  • Es gibt etwas falsch mit Ihrer Terminologie. Prozesse, die nicht "laufen auf der JVM" ist Die JVM eine (Einzel -) Prozess. Redest du von threads?
  • Ja, du hast Recht, in der Tat ist es zwei java-Launcher verpackt in einem shell-Skript. Ich wieder Bearbeiten die post mit der Korrektur
  • Ihre Frage ist noch nicht wirklich klar. Wenn Sie starten von java-zweimal (eine für a und Eine für B), dann A-und B-laufen nicht auf der gleichen VM. Jedes Programm hat seine eigenen VM. Ist es das, was du tust?
  • Ich habe das gerade korrigiert meine Frage
  • Es ist immer noch unklar. Haben Sie eine weblogic-server laufen, oder zwei? Welche Art von Programmen sind A und B? Web-apps bereitgestellt, wie war-Dateien? Ohren? Eine enterprise-Anwendung, Gläser sollten NICHT in der server-classpath. Sie sollten in den Krieg oder Ohr der Anwendung. App-Server bereitstellen können zwei apps mit widersprüchlichen Gläser, wenn diese Gläser sind eingesetzt als Teil der app.
  • In der Tat, es gibt zwei KSH, die das starten von Java-Programmen. Aber beide teilen die gleichen weblogic-classpath.

InformationsquelleAutor Mik378 | 2011-11-18
Schreibe einen Kommentar