我在寫一個Spring web應用程序,它在運行時加載插件文件。這些插件是實現IPlugin
的類。但是,在運行時加載插件時,我得到一個ClassNotFoundException
(無法找到IPlugin
)。Spring webapp加載插件:ClassNotFoundException
接口IPlugin
位於我的web應用程序的一個包中。爲了構建插件,我將接口導出到jar文件並將其包含在插件的構建路徑中。
URL fileUrl = jar.toURI().toURL();
String jarUrl = "jar: " + fileUrl + "!/";
URL[] urls = new URL[] {new URL(jarUrl)};
URLClassLoader loader = new URLClassLoader(urls);
IPlugin plugin = (IPlugin) Class.forName(clazz, true, loader).newInstance();
我如何在運行時可用的接口:
在我的web應用程序,該插件使用URLClassLoader
裝?
編輯: 如果我將包含IPlugin.class
的罐子與插件一起加載,它可以工作。但那真的有必要嗎?
它被添加到/ lib /文件夾或部署程序集? –
我假設你使用的是tomcat,這個JAR文件是否存在於WEB-INF/lib內部? –
我在我的WEB-INF/lib中添加了包含'IPlugin'的jar,但問題仍然存在。我是否還需要將插件添加到WEB-INF/lib中? – user2035039