加載一個由兩個不同的類加載器實例化的對象時遇到問題。基本上我實現了一個帶有三個不同插件的webapp,每個插件都有自己的類加載器。項目結構如下:如何使用兩個不同的類加載器加載同一個類
MyAppService
- ObjectInterface.java
MyAppImpl
- ObjectImplementation.java
MyClass
- MyClass.java
它是一個基於maven的項目。 MyAppImpl
和MyClass
都具有MyAppService
作爲依賴性。現在,我使用此代碼創建類ObjectImplementation
中類ObjectImplementation
的對象。
ObjectInterface o = new ObjectImplementation();
我想這個對象傳遞給方法在Myclass
類,在這裏我得到這個代碼的對象。
ObjectInterface o = (ObjectInterface) passedObject;
但我得到了異常java.lang.ClassCastException: MyAppImpl.ObjectImplementation cannot be cast to MyAppService.ObjectInterface
。我也嘗試動態類加載與代碼
ObjectInterface o = (ObjectInterface) Class.forName("MyAppImpl.ObjectImplementation").newInstance();
但我得到例外java.lang.ClassNotFoundException: MyAppImpl.ObjectImplementation
。添加MyAppImpl作爲MyClass的依賴項目前不是一種選擇。有誰知道我的問題是否有解決方案?