• 技术文章 >Java >java教程

    Java如何动态添加外部jar包到classpath的案例

    黄舟黄舟2017-09-09 11:10:10原创1066
    这篇文章主要介绍了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核实处理。
    专题推荐:Java 外部 添加
    上一篇:Java中实现POI导入EXCEL2003与EXCEL2007的实例 下一篇:JavaWeb实现表单注册界面的方法实例
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 怎么理解Java中的lambda表达式• Java数据结构之AVL树详解• 一起分析Java中异常的产生原因及处理• Java详细介绍之集合注意事项• 详细整理java枚举的使用总结
    1/1

    PHP中文网