2012-06-28 37 views

回答

1

在插件架構中,您不應該直接訪問插件實現類。您可以使用的接口是接口,通過它您可以訪問實施類的實例。這顯然排除了任何靜態方法。將這些方法重構爲實例方法並通過接口公開它們。

+0

感謝您的回覆,但似乎有辦法做到這一點 –

+0

如果您篡改了可能有辦法做到這一點與插件基礎設施實施,但它只會打破實施。插件體系結構的基本要求是插件只能通過其公共接口從其他插件中看到。對於其他插件的實現類,必須沒有靜態依賴關係,因爲另一個插件無權假定它們會在那裏。 –

+0

我現在看到了,我應該尊重這個原則,謝謝 –

0

聽起來像一個類加載器的問題。加載插件的類加載器不會看到您的主類。沒有代碼示例就很難再說了。

+0

謝謝,我想你是對的,我從sysLoader =(URLClassLoader)ClassLoader.getSystemClassLoader();到sysLoader =(URLClassLoader)MainClass.class.getClassLoader();它似乎工作 –

0

我設法creting一個類加載器與應用程序的類加載器這樣的父類加載器來解決我的問題:
URLClassLoader的MyLoader =新的URLClassLoader(新的URL [] {},MyClass.class.getClassLoader()),現在,我的應用程序中加載的所有類對於使用MyLoader加載的插件是可見的