在项目开发过程中我们有时候需要动态的添加外部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开发人员经常碰到的:在开发,调试阶段,通过在CLASSPATH中设置第三方的jar包路径,自己编写的class工作正常.开发完毕,部署的时候,将开发的class打成一个可执行jar包,会发现通过Class.forName...
一、介绍2 二、下载2 三、安装2 四、运行4 五、设置 Basic项6 六、设置 Classpath .7 ...2、设置的classpath必须能找到外部依赖包和文件; 12 3、执行生成的 exe文件,最好是在生成的目录; .12
classpath是我们类存放的根路径,我们可以设置classpath来在任意路径来执行java的class类 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(. 代表当前路径) 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 ...
输入 :java -jar jar包名.jar step2:剩下的就是按照 3.1中的步骤使用即可 4. Properties资源(配置)文件的解析(重点) ---------------------------------(注意:重点)----------------...
否则,只需将罐子添加到CLASSPATH中即可。文献资料该文档位于 。 它也包含在master分支的。学分此API依赖库来解析发送到区域管理器服务器的原始HTTP命令的JSON输出。 与我们的API一起打包在文件中,因此org.json...
## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...
## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...
## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...
## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...
## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...
## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...
## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...
## lib将自定义jar文件添加到此文件夹。 添加到此文件夹的文件将被复制到类路径上的WEB-INF / lib /中。 ## services所有服务都应通过Studio添加。 添加后,可以通过eclipse或其他编辑器(包括添加其他类)来编辑...
添加到此文件夹的文件将被复制到classpath上的WEB-INF / classes /中。 重新导入后,对导入服务的修改可能会丢失。 要在Studio中查看外部更新,请使用Java编辑器中的刷新按钮。 ## src / main / java将您的应用...
更新cmap.classpath对外部必需jar的引用 更新ctrampIf.classpath对外部必需jar的引用 确保在.classpath文件中的公共基础jar之前引用了jxl jar(以避免Worksheet GC禁用不一致错误) 将循环依赖关系从错误更改为警告...
读者可以在上例的基础上更进一步,来生成jar包,可在run这个target下再加上如下target: <target name="jar" depends="run"> <jar destfile="helloworld.jar" basedir="build/classes"> ...
� Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...
添加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...