Java如何动态添加外部jar包到classpath的案例
java
外部
添加
这篇文章主要介绍了java动态添加外部jar包到classpath的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
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的案例的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
1 周前
By DDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
在哪里可以找到原子中的起重机控制钥匙卡
1 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处
