1

有没有办法在 Java 应用程序中实现简单的插件,可以在需要时启动并且有据可查?

我正在寻找类似于 OSGI、JPF 和 JSPF 的东西。但是,OSGI 很复杂,JPF 没有很好的文档记录,而且 JSPF 不允许您仅在需要时启动插件。

例如,有一个插件文件夹。任何人都可以通过实现我提供的接口来创建插件。创建插件后,任何想使用它的人都可以简单地将它放入我的应用程序的插件文件夹中,应用程序将加载它。

或者,一个更好的词是“附加”。

我的问题有一些类似的问题,但我想了解更多。这些问题的答案很模糊。

http://stackoverflow.com/questions/2369499/how-to-make-java-plugins?rq=1
http://stackoverflow.com/questions/7587318/how-can-i-write-my-own-plugin-in-java

如果您不知道,请告诉我如何在我的应用程序中使用 JPF。非常感谢您花时间阅读本文。

编辑:我已经解决了我的问题。我现在正在使用 JSPF - 它非常适合我的目的。感谢所有试图提供帮助的人,对于没有提出“真正的问题”,我深表歉意。

4

3 回答 3

5

如果您为您的 Jar 启动一个ClassLoader,您可以随时加载或卸载代码。

http://viralpatel.net/blogs/java-dynamic-class-loading-java-reflection-api/

http://www.javalobby.org/java/forums/t18345.html

http://zeroturnaround.com/blog/reloading-objects-classes-classloaders/

于 2012-07-15T07:17:20.083 回答
2

是的,您可以实施它们。只是为了语义,plugins在 java 中被调用libraries(这应该让你更容易在谷歌上搜索)。通常,Java 中的库在构建时显示为 .jar 文件

以下是一些可以帮助您的链接:

http://www.digilife.be/quickreferences/PT/Build%20your%20own%20Java%20library.pdf
https://stackoverflow.com/questions/3612567/how-to-create-my-own-java-libraryapi

回复编辑和对此帖子的评论:

那么你应该阅读这篇文章:如何设计可扩展软件(插件架构)?

于 2012-07-15T07:10:50.003 回答
1

教程向您展示了如何轻松地为您的应用程序实现插件方法,但这需要您的应用程序支持 Eclipse RCP。您将找到所需的一切,包括“插件目录”,然后将按需加载。RCP 不是唯一的 OSGI 实现,还有其他实现,但我建议您使用它,因为有更广泛的社区支持。

自从我开始写答案的那一刻起,我看到你的问题有很多更新。在我看来,您不应该害怕深入研究建议的框架,请选择一个看起来复杂但经过验证的框架,而不是仅仅因为您是新手而堆积或重新发明自行车。

于 2012-07-15T07:27:04.753 回答