【发布时间】:2016-01-12 10:31:26
【问题描述】:
我正在编写一个 Spring Web 应用程序,它在运行时加载插件文件。这些插件是实现IPlugin 的类。但是,在运行时加载插件时,我得到一个ClassNotFoundException(找不到IPlugin)。
接口IPlugin 位于我的网络应用程序的一个包中。为了构建插件,我将接口导出到 jar 文件并将其包含在插件的构建路径中。
在我的网络应用中,插件是使用 URLClassLoader 加载的:
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();
如何使接口在运行时可用?
编辑:
如果我将包含 IPlugin.class 的 jar 与插件一起加载,它确实有效。但这真的有必要吗?
【问题讨论】:
-
添加到 /lib/ 文件夹或部署程序集?
-
我假设你使用的是tomcat,这个JAR文件是否存在于WEB-INF/lib中?
-
我将包含
IPlugin的 jar 添加到我的 WEB-INF/lib 中,但问题仍然存在。我还需要将插件添加到 WEB-INF/lib 吗?
标签: java spring spring-mvc web-applications