java动态添加外部jar包到classpath的实例详解

发布时间 - 2026-01-11 03:10:20    点击率:

java动态添加外部jar包到classpath的实例详解

前言:

  在项目开发过程中我们有时候需要动态的添加外部jar包,但是具体的业务需求还没有遇到过,因为如果动态添加外部jar包后,我们就需要修改业务代码,而修改代码就需要重新启动服务,那样好像就没有必要动态添加外部jar包了,怎么样才能不重新启动服务器就可以使用最新的代码我没有找到方法,如果各位知道的话给我点建议,回归主题,实现动态添加外部jar包到classpath的方法如下:

String beanClassName = "com.dynamic.DynamicBean3"; 
Map<String,Class<?>> classMap = new HashMap<String,Class<?>>(); 
String filePath = "f:\\testDynamicBean-1.0-SNAPSHOT.jar"; 
String uFilePath = "file:f:\\testDynamicBean-1.0-SNAPSHOT.jar"; 
 
URL url1 = new URL(uFilePath); 
URLClassLoader urlClassLoader = new URLClassLoader(new URL[] { url1 }, Thread.currentThread() 
        .getContextClassLoader()); 
List<JarEntry> jarEntryList = new ArrayList<>(); 
JarFile jarFile = new JarFile(filePath); 
Enumeration<JarEntry> jarEntryEnumeration = jarFile.entries(); 
while (jarEntryEnumeration.hasMoreElements()){ 
   JarEntry jarEntry = jarEntryEnumeration.nextElement(); 
   if (//jarEntry.getName().startsWith(filePath) && 
      jarEntry.getName().endsWith(".class")) { 
        jarEntryList.add(jarEntry); 
      } 
    } 
 
   for (JarEntry entry : jarEntryList) { 
      String className = entry.getName().replace('/', '.'); 
      className = className.substring(0, className.length() - 6); 
      if(!classMap.containsKey(beanClassName)){ 
        Class<?> loadClass = urlClassLoader.loadClass(className); 
        classMap.put(className,loadClass); 
      } 
    } 
    try { 
      Method printMethod = classMap.get(beanClassName).getMethod("printBean3"); 
      printMethod.invoke(classMap.get(beanClassName).newInstance()); 
    } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
      e.printStackTrace(); 
    } catch (NoSuchMethodException e) { 
      e.printStackTrace(); 
    } catch (InstantiationException e) { 
      e.printStackTrace(); 
    } 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java动态添加外部jar包到classpath  # Java  # 动态添加jar包  # maven引入本地jar包运行报错java.lang.NoClassDefFoundError解决  # java如何反编译jar包并修改class文件重新打包  # IDEA如何对单个的java class文件打成jar包  # 重新启动  # 还没有  # 如有  # 就没  # 希望能  # 有必要  # 谢谢大家  # 没有找到  # 我点  # 遇到过  # 就可以  # 过程中  # 包了  # 方法如下  # 怎么样才能  # 疑问请  # testDynamicBean  # filePath  # HashMap  # Class 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: 简单实现Android文件上传  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何在云主机上快速搭建多站点网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  SQL查询语句优化的实用方法总结  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Java垃圾回收器的方法和原理总结  微信小程序 canvas开发实例及注意事项  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  如何解决hover在ie6中的兼容性问题  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  JavaScript数据类型有哪些_如何准确判断一个变量的类型  如何用PHP快速搭建高效网站?分步指南  如何选择可靠的免备案建站服务器?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Python3.6正式版新特性预览  iOS发送验证码倒计时应用  Windows Hello人脸识别突然无法使用  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Angular 表单中正确绑定输入值以确保提交与验证正常工作  实现点击下箭头变上箭头来回切换的两种方法【推荐】  微信小程序制作网站有哪些,微信小程序需要做网站吗?  javascript基于原型链的继承及call和apply函数用法分析  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  如何快速搭建自助建站会员专属系统?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  创业网站制作流程,创业网站可靠吗?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何续费美橙建站之星域名及服务?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何在Windows 2008云服务器安全搭建网站?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  JavaScript模板引擎Template.js使用详解  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Python制作简易注册登录系统  香港服务器如何优化才能显著提升网站加载速度?  Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  php485函数参数是什么意思_php485各参数详细说明【介绍】  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?