Ich habe ein Problem mit dem Laden eines Objekts, das von zwei verschiedenen Klassenladern instanziiert wird. Grundsätzlich implementiere ich eine Webapp mit drei verschiedenen Plugins, jedes mit einem eigenen Classloader. Die Projektstruktur sieht so aus:Wie man dieselbe Klasse mit zwei verschiedenen Klassenladern lädt
MyAppService
- ObjectInterface.java
MyAppImpl
- ObjectImplementation.java
MyClass
- MyClass.java
Es ist ein mavenbasiertes Projekt. MyAppImpl
und MyClass
beide haben MyAppService
als Abhängigkeit. Jetzt verwende ich diesen Code, um ein Objekt der Klasse ObjectImplementation
in Klasse ObjectImplementation
zu erstellen.
ObjectInterface o = new ObjectImplementation();
Ich möchte in der Klasse dieses Objekt an eine Methode zu übergeben Myclass
, wo ich das Objekt mit diesem Code.
ObjectInterface o = (ObjectInterface) passedObject;
Aber ich bekomme die Ausnahme java.lang.ClassCastException: MyAppImpl.ObjectImplementation cannot be cast to MyAppService.ObjectInterface
. Ich habe auch versucht, dynamischen Laden von Klassen mit dem Code
ObjectInterface o = (ObjectInterface) Class.forName("MyAppImpl.ObjectImplementation").newInstance();
aber ich bekomme die Ausnahme java.lang.ClassNotFoundException: MyAppImpl.ObjectImplementation
. Das Hinzufügen von MyAppImpl als Abhängigkeit für MyClass ist derzeit keine Option. Weiß jemand, ob es eine Lösung für mein Problem gibt?