使用java开发应用程序_使用Java中的插件支持开发应用程序
我一直在研究如何开发可以加载插件的应用程序.
到目前为止,我已经看到这可以通过定义一个接口来实现,并让插件实现它.
但是,我当前的问题是如何在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中的插件支持开发应用程序相关推荐
- vscode重置应用程序_如何在Windows 10上重置应用程序的数据
vscode重置应用程序 With Windows 10's Anniversary Update, you can now reset an app's data without actually ...
- 用Java 编写菜单价格和的程序_使用JAVA 编写一个程序,显示5中商品价格,用户可以选择多种商品并在其后的文本框输入购买的数量。...
展开全部 用java Swing做的?给你个代码,还有运行结果图 package my.test.main; import java.awt.BorderLayout; import java.awt ...
- 怎样用java编写日志_用JAVA写一个日志类程序以供大家学习
中华网络安全联盟 作者:jacoo 来源:本站原创 时间:2006-4-18 说明: 尽管JAVA类库和其他工具提供了不少的纪录程序运行状态的日志类,我发觉也 不是万能的,有时需要根 ...
- java final 类_在Java中,final修饰的类有什么特点
展开全部 关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼ ...
- java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创
由于项目中用到了Applet与Servlet之间(客户端用Applet.Server端用Servlet)的通信,要求: 1:>客户端与服务端必须出Log. 2:>浏览器在加载Applet时 ...
- java web源代码_检测Java Web应用程序而无需修改其源代码
java web源代码 与其他系统进行交互时,大多数Java Web应用程序都使用标准Java接口. 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Ser ...
- java coin介绍_代码示例中的Java 7:Project Coin
java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...
- java callable用法_在Java中使用Callable和Future
最近,我们正在开发一个监控仪表板,我们想要ping几个第三方服务器,只是为了检查它们的可用性,或者我们想要调用健康检查. 我们正在对服务器进行一系列api调用,这些服务器的IP,用户名和密码被外部化为 ...
- java编写某计算器控制台程序_用java程序编写一个计算器
点击查看用java程序编写一个计算器具体信息 答:给你一个参考,希望不要被百度吞了当晚餐 import java.awt.BorderLayout; import java.awt.GridLayou ...
最新文章
- Mol Plant | 多家单位联合发布小麦组学大数据可视化和在线分析平台WheatOmics
- C# WinForm 在窗口菜单上显示已打开窗体的标题及其窗体的排列
- Oracle the network adapter could not establish the connection
- 算法设计与分析——递归与分治策略——最接近点对问题
- windows mobile 编译(生成镜像)提速
- [spring]spring boot项目实例
- java匿名类 - new接口
- 百度硬盘搜索SDK接口说明(摘自百度)
- html密码查看器,浏览器密码查看工具(WebBrowserPassView)
- 微软服务器版本组建nas,怎么用windows server 2012组建家用nas服务器
- uniapp 自定义头部 支持微信、百度、头条小程序
- 计算机毕业设计springboot+vue+elementUI校园志愿者管理系统
- 解密为何 Golang 能从众多语言中脱颖而出
- 弘辽科技:拼多多里有top是什么意思?如何提高排名?
- iphone的致命硬伤
- Matlab实现滤波器,进行ASK、FSK、多音信号的滤波
- 构建orangePi r1 plus (RK3328)系统的整个过程
- 权威的计算机类期刊,计算机类期刊权威排名
- 论文中的参考文献序号自动链接到对应的参考文献
- Oracle日期格式转换 to_date,to_char,to_timetamp 相互转换
热门文章
- python内存模型_内存篇3:CPython的内存管理架构-L2-块
- Codeforces Global Round 15 (A-D)没有C
- java报错 日志_java 日志报错
- python中代理模式分为几种_Python设计模式之代理模式实例详解
- python微信机器人部署服务器_玩法收藏/云服务器/零基础微信机器人实践( Python )...
- 2.5d generator 2.0_ps插件【2.5D插件】
- asterisk架构
- python十条建议_十条建议帮你提高Python编程效率
- matlab中solve和resolve,resolve和solve的区别
- 简单网络聊天程序java_基于Java实现hello/hi简单网络聊天程序