扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
利用java怎么将外部jar包添加到lasspath?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联公司专注于企业网络营销推广、网站重做改版、宁德网站定制设计、自适应品牌网站建设、HTML5建站、商城开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为宁德等各大城市提供网站开发制作服务。java动态添加外部jar包到classpath的实例详解
前言:
在项目开发过程中我们有时候需要动态的添加外部jar包,但是具体的业务需求还没有遇到过,因为如果动态添加外部jar包后,我们就需要修改业务代码,而修改代码就需要重新启动服务,那样好像就没有必要动态添加外部jar包了,怎么样才能不重新启动服务器就可以使用最新的代码我没有找到方法,如果各位知道的话给我点建议,回归主题,实现动态添加外部jar包到classpath的方法如下:
String beanClassName = "com.dynamic.DynamicBean3"; Map> classMap = new HashMap >(); 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 jarEntryList = new ArrayList<>(); JarFile jarFile = new JarFile(filePath); Enumeration 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(); }
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流