`
357029540
  • 浏览: 725498 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

java动态添加外部jar包到classpath

    博客分类:
  • JAVA
阅读更多

          在项目开发过程中我们有时候需要动态的添加外部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();
        }

 

0
0
分享到:
评论
2 楼 yangganboy 2019-08-05  
yangganboy 写道
可以看我简书写的 java 运行时修改classpath 添加jar

java 运行时动态修改classpath添加外部jar
1 楼 yangganboy 2019-08-05  
可以看我简书写的 java 运行时修改classpath 添加jar

相关推荐

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

    主要介绍了java动态添加外部jar包到classpath的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

    在可执行jar中载入第三方jar的几个解决方法

    以下情景是很多Java开发人员经常碰到的:在开发,调试阶段,通过在CLASSPATH中设置第三方的jar包路径,自己编写的class工作正常.开发完毕,部署的时候,将开发的class打成一个可执行jar包,会发现通过Class.forName...

    Launch4j 教程——JAR应用程序生成exe

    一、介绍2 二、下载2 三、安装2 四、运行4 五、设置 Basic项6 六、设置 Classpath .7 ...2、设置的classpath必须能找到外部依赖包和文件; 12 3、执行生成的 exe文件,最好是在生成的目录; .12

    java环境搭建.docx

    classpath是我们类存放的根路径,我们可以设置classpath来在任意路径来执行java的class类 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(. 代表当前路径) java运行机制、java标识符 java...

    疯狂JAVA讲义

    学生提问:为什么我创建Java对象时从未感觉到java.lang.Object的构造器被调用过? 150 5.7 多态 151 5.7.1 多态性 151 5.7.2 引用变量的强制类型转换 152 5.7.3 instanceof运算符 154 5.8 继承与组合 154 ...

    day020-继承加强和设计模式代码和笔记.rar

    输入 :java -jar jar包名.jar step2:剩下的就是按照 3.1中的步骤使用即可 4. Properties资源(配置)文件的解析(重点) ---------------------------------(注意:重点)----------------...

    SRP-RFCode:RFCode ZoneManager Java API-用于2015年Monmouth夏季研究计划

    否则,只需将罐子添加到CLASSPATH中即可。文献资料该文档位于 。 它也包含在master分支的。学分此API依赖库来解析发送到区域管理器服务器的原始HTTP命令的JSON输出。 与我们的API一起打包在文件中,因此org.json...

    psabackoffice2

    ## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...

    Auto_RXAspCMJeV

    ## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...

    Auto_CWfymwneYP

    ## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...

    Auto_RHSoDKZZOm

    ## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...

    Auto_gyOTHlxzqz

    ## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...

    Auto_KsMxFaFQhd

    ## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...

    Auto_pUKbAltHJR

    ## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...

    Auto_kOjXQbufvc

    ## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...

    Auto_VOMIZsJIgw

    添加到此文件夹的文件将被复制到classpath上的WEB-INF / classes /中。 重新导入后,对导入服务的修改可能会丢失。 要在Studio中查看外部更新,请使用Java编辑器中的刷新按钮。 ## src / main / java将您的应用...

    cmap_abm:CMAP基于活动的模型源代码-ab source code

    更新cmap.classpath对外部必需jar的引用 更新ctrampIf.classpath对外部必需jar的引用 确保在.classpath文件中的公共基础jar之前引用了jxl jar(以避免Worksheet GC禁用不一致错误) 将循环依赖关系从错误更改为警告...

    ant1.9资源

    读者可以在上例的基础上更进一步,来生成jar包,可在run这个target下再加上如下target: &lt;target name="jar" depends="run"&gt; &lt;jar destfile="helloworld.jar" basedir="build/classes"&gt; ...

    新版Android开发教程.rar

    � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...

    springboot参考指南

    添加classpath依赖 vii. 11.3. 编写代码 i. 11.3.1. @RestController和@RequestMapping注解 ii. 11.3.2. @EnableAutoConfiguration注解 iii. 11.3.3. main方法 viii. 11.4. 运行示例 ix. 11.5. 创建一个可执行jar x...

Global site tag (gtag.js) - Google Analytics