java - 如何构建java桌面应用程序运行时模块化?

标签 java eclipse osgi javafx-8 equinox

我有一个 Java 桌面应用程序,我想向我的应用程序添加插件/插件支持功能

搜索后我发现 Blender3D 插件非常好,只需将一些文件复制到 Blender 目录并在首选项窗口中启用它,然后插件可以添加新的引擎、菜单、按钮和面板......我喜欢这种风格并且想要在我的应用程序中拥有类似的东西,以便在发布主应用程序后仅使用插件来开发它

我找到了 OSGi,但无法理解如何在我的主应用程序中使用通过此功能创建的插件?!而且我不想使用 Eclipse RCP 或 Netbeans RCP,我想将此功能添加到我当前使用 javafx for gui 的主应用程序中。

谢谢

最佳答案

看一下java反射API

java.lang.reflect.Method等

还可以了解接口(interface)和抽象类的用途。您可能希望让您的插件 api 提供一个或多个带有一个或多个抽象类的接口(interface),作为要扩展的实现的具体基类。

实际 jdk 中的一个很好的例子是 jdbc api。它完全是插件驱动的(您要求 DriverManager 为给定的 URI 实例化一个驱动程序,它会处理编码实现,该实现隐藏在接口(interface)和抽象类后面)。

干杯

关于java - 如何构建java桌面应用程序运行时模块化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822266/

相关文章:

java:关于泛型结构的谜题

eclipse - Maven 原型(prototype)未出现在 m2eclipse Nexus 索引器中

java - Eclipse 将此代码视为错误,但它在 Maven 中编译得很好

eclipse - 从 ant + ivy 迁移到 gradle

maven-2 - 如何使 Sonatype 的 Nexus Repository 与 SpringSource 的 EBR 配合使用

java - 通过bash运行Java应用程序的多个实例,如何访问其外壳菜单?

java - Android OpenGLES 2 从触摸坐标拾取光线,非投影计算略有偏差

java - 在哪里可以找到一组带有注入(inject)错误的Java测试程序?

java - OSGI组件初始化顺序可选贪婪

servlets - 如何从 Lotus Domino OSGI servlet 获取服务器 session