Ich weiß, dass dies für erfahrene Programmierer eine dumme Frage sein kann. Ich habe jedoch eine Bibliothek (einen http-Client), die einige der anderen in meinem Projekt verwendeten Frameworks / Jars benötigen. Aber alle erfordern unterschiedliche Hauptversionen wie:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
Ist der Klassenlader intelligent genug, um sie irgendwie zu trennen? Höchst wahrscheinlich nicht? Wie geht der Classloader damit um, falls eine Klasse in allen drei Gläsern gleich ist? Welches ist geladen und warum?
Nimmt der Classloader nur genau ein Glas auf oder mischt er Klassen willkürlich? Wenn zum Beispiel eine Klasse aus Version-1.jar geladen wird, werden alle anderen Klassen, die von demselben Klassenladeprogramm geladen werden, alle in dasselbe JAR verschoben?
Wie gehen Sie mit diesem Problem um?
Gibt es einen Trick, um die Gläser irgendwie in die "required.jar" zu "integrieren", so dass sie von der als "eine Einheit / Packung" angesehen Classloader
oder irgendwie verknüpft werden?