我是 Java 新手,我正在为以下问题寻找合适的解决方案。我开发了一个以通用方式执行某些操作的应用程序。现在我想让这个应用程序能够根据使用通用接口的外部类或 jar 文件(可能实际安装或未安装)将标准行为修改为更具体的东西。假设这些外部文件将比主应用程序更频繁地升级,这就是我希望它们保持分离的主要原因。这项任务的正确方法是什么?反射有能力做到这一点吗?谢谢!
问问题
132 次
2 回答
1
如果您将 jar 添加到您的 classPath 中,您就可以加载它,从而产生插件的效果。
但是一旦你将它加载到 classLoader 中,你就不能简单地刷新类定义(以防你需要即时更新它)。
如果您需要即时更新,可以使用一些解决方案,例如 OSGi。如果您可以在每次更新插件时重新启动它,您可以使用一些简单的 IoC 容器,例如 Spring、Guice 或 Tapestry IoC。
这里有一篇你可能感兴趣的有趣帖子,在这种情况下,要加载的模块是在启动时发现并加载加载类路径上的插件(每个都可以是一个 jar)。
于 2012-07-05T11:13:42.500 回答
0
斯派思说的。但是,如果您需要在不重新启动应用程序的情况下替换类,您可以使用 Commons JCI 的ReloadingClassloader。
于 2012-07-05T11:19:51.017 回答