在eclipse中有个自动升级,可以直接通过一个互联上链接安装一新功能.在安装过程中无需重启其原理是怎么样实现的呢?URLClassLoader是解决问题的核心所在,下面一个简单的DEMO来实现JVM动态加载jar包
创建一个Animal接口:
package com.huzy.classLoader;
public interface Animal {
public String say();
}
创建Dog实现Animal接口:
package com.huzy.classLoader;
public class Dog implements Animal {
public String say() {
return "wang wang";
}
}
将Dog类打包到dog.jar中,使用eclipse的export功能打包成jar(只需要选Dog类)
创建MyClassLoader类,实现URLClassLoader:
package com.huzy.classLoader;
import java.net.URL;
import java.net.URLClassLoader;
public class MyURLClassLoader extends URLClassLoader {
public MyURLClassLoader(URL url) {
super(new URL[] { url });
}
public static Object test(String str, String cls) {
try {
URL url = new URL(str);
MyURLClassLoader t = new MyURLClassLoader(url);
Class<?> c = t.findClass(cls);
Animal animal = (Animal) c.newInstance();
return animal.say();
} catch (Exception ex) {
ex.printStackTrace();
}
return "";
}
}
此类用于动态加载一个jar到jvm,并通过反射调用jar中的class
创建Main,测试函数入口
package com.huzy.classLoader;
public class Main {
public static void main(String[] args) {
try {
System.out.println(MyURLClassLoader.test("file:C:/temp/dog.jar", "com.huzy.classLoader.Dog"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
分享到:
相关推荐
通过动态加载jar包的方式,反射调用内部方法
Java 动态加载jar文件示例,轻松实现插件式开发
有些项目需要(根据机型)动态加入jar包,该资源包含了一个在android工程中动态加载jar文件的小程序,注释详细,需要注意我们的jar文件是需要经过dx处理过的,可参考博客:...
springboot动态加载jar包到容器中,并映射为接口对外提供服务
JAVA动态加载JAR,zip包例子 有在项目中用到
android动态加载jar
NULL 博文链接:https://hoochiang.iteye.com/blog/2249816
JAVA动态加载JAR文件以及反射调用其方法
一个工具类实现了动态加载jar包 在不重启服务器的情况下,可以调用jar包的class
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
该资源包含了一个动态加载jar文件中图片的简单demo,简单易懂。
android 动态加载jar的相关代码
该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件pac
Android中动态加载jar包
开发完毕,部署的时候,将开发的class打成一个可执行jar包,会发现通过Class.forName(String classname) 或ClassLoader.getSystemClassLoader().loadClass(String classname)来动态载入存在于第三方jar包中的class会抛...
Android动态加载jar/dex+android开发艺术其他demo,基于android studio,示例代码,需要的可看
android 插件化动态加载jar 有时候会看到一些应用对应的SDcard里的文件夹里有 ***.jar 等文件,现在明白这些文件大概是用来做应用内自动更新用的。 打比方说,类似eclipse 可以通过预留接口,安装各种插件一样。 ...