我一直在研究如何开发可以加载插件的应用程序.

到目前为止,我已经看到这可以通过定义一个接口来实现,并让插件实现它.

但是,我当前的问题是如何在Jars中打包时加载插件.有没有“最好的”方法呢?

我正在考虑的当前逻辑是让每个插件和他们的Jar内部寻找实现接口的类.但我不知道如何进行这样的查找.我认为这个逻辑可能不是很好,但我找不到关于这个特定主题的任何有用信息.

**编辑1:**

添加更多信息:

预期的插件将是包含在主应用程序的Jar所在的子目录中的Jar文件,如下所示:

应用程序的文件夹

| – Main_Application.jar

| – 插件

| – Plugin1.jar

| – Plugin2.jar

| – Steve’s_plugin.jar

等等.

我期望Application能够在运行时加载文件夹中的所有插件.所以在代码中,它只会意识到插件的文件夹应该存在,并且应该在这样的文件夹中有Jars.

假设我有一个这样的插件界面:

interface Plugin

{

public void run();

}

插件将由实现此类接口的类标识,如此

class Plugin1 implements Plugin

{

//attributes and other methods

@override

public void run()

{

//something happens here

}

}

class Plugin2 implements Plugin

{

//attributes and other methods

@override

public void run()

{

//something happens here

}

}

应用程序应该只编译一次,并且能够在执行时加载添加到文件夹的任何插件.

为了使Application能够加载任何插件,我是否需要建立Jar内容的规则,如包名称和实现接口的类?或者预计实现插件接口的类可以在Jar中的任何包中,并且有任何名称?

对于我想用这些插件做的事情,这是更通用的方法.简而言之,我打算构建一个具有选项卡的应用程序,每个插件将提供每个选项卡的界面和功能.我正在尝试这个,因为我希望能够单独维护每个选项卡,并且不希望重新编译整个应用程序,因为只有一个组件的更改根本不会影响其他组件.

使用java开发应用程序_使用Java中的插件支持开发应用程序相关推荐

  1. vscode重置应用程序_如何在Windows 10上重置应用程序的数据

    vscode重置应用程序 With Windows 10's Anniversary Update, you can now reset an app's data without actually ...

  2. 用Java 编写菜单价格和的程序_使用JAVA 编写一个程序,显示5中商品价格,用户可以选择多种商品并在其后的文本框输入购买的数量。...

    展开全部 用java Swing做的?给你个代码,还有运行结果图 package my.test.main; import java.awt.BorderLayout; import java.awt ...

  3. 怎样用java编写日志_用JAVA写一个日志类程序以供大家学习

    中华网络安全联盟    作者:jacoo    来源:本站原创    时间:2006-4-18 说明: 尽管JAVA类库和其他工具提供了不少的纪录程序运行状态的日志类,我发觉也 不是万能的,有时需要根 ...

  4. java final 类_在Java中,final修饰的类有什么特点

    展开全部 关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼ ...

  5. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创

    由于项目中用到了Applet与Servlet之间(客户端用Applet.Server端用Servlet)的通信,要求: 1:>客户端与服务端必须出Log. 2:>浏览器在加载Applet时 ...

  6. java web源代码_检测Java Web应用程序而无需修改其源代码

    java web源代码 与其他系统进行交互时,大多数Java Web应用程序都使用标准Java接口. 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Ser ...

  7. java coin介绍_代码示例中的Java 7:Project Coin

    java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...

  8. java callable用法_在Java中使用Callable和Future

    最近,我们正在开发一个监控仪表板,我们想要ping几个第三方服务器,只是为了检查它们的可用性,或者我们想要调用健康检查. 我们正在对服务器进行一系列api调用,这些服务器的IP,用户名和密码被外部化为 ...

  9. java编写某计算器控制台程序_用java程序编写一个计算器

    点击查看用java程序编写一个计算器具体信息 答:给你一个参考,希望不要被百度吞了当晚餐 import java.awt.BorderLayout; import java.awt.GridLayou ...

最新文章

  1. Mol Plant | 多家单位联合发布小麦组学大数据可视化和在线分析平台WheatOmics
  2. C# WinForm 在窗口菜单上显示已打开窗体的标题及其窗体的排列
  3. Oracle the network adapter could not establish the connection
  4. 算法设计与分析——递归与分治策略——最接近点对问题
  5. windows mobile 编译(生成镜像)提速
  6. [spring]spring boot项目实例
  7. java匿名类 - new接口
  8. 百度硬盘搜索SDK接口说明(摘自百度)
  9. html密码查看器,浏览器密码查看工具(WebBrowserPassView)
  10. 微软服务器版本组建nas,怎么用windows server 2012组建家用nas服务器
  11. uniapp 自定义头部 支持微信、百度、头条小程序
  12. 计算机毕业设计springboot+vue+elementUI校园志愿者管理系统
  13. 解密为何 Golang 能从众多语言中脱颖而出
  14. 弘辽科技:拼多多里有top是什么意思?如何提高排名?
  15. iphone的致命硬伤
  16. Matlab实现滤波器,进行ASK、FSK、多音信号的滤波
  17. 构建orangePi r1 plus (RK3328)系统的整个过程
  18. 权威的计算机类期刊,计算机类期刊权威排名
  19. 论文中的参考文献序号自动链接到对应的参考文献
  20. Oracle日期格式转换 to_date,to_char,to_timetamp 相互转换

热门文章

  1. python内存模型_内存篇3:CPython的内存管理架构-L2-块
  2. Codeforces Global Round 15 (A-D)没有C
  3. java报错 日志_java 日志报错
  4. python中代理模式分为几种_Python设计模式之代理模式实例详解
  5. python微信机器人部署服务器_玩法收藏/云服务器/零基础微信机器人实践( Python )...
  6. 2.5d generator 2.0_ps插件【2.5D插件】
  7. asterisk架构
  8. python十条建议_十条建议帮你提高Python编程效率
  9. matlab中solve和resolve,resolve和solve的区别
  10. 简单网络聊天程序java_基于Java实现hello/hi简单网络聊天程序