我在写一个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