动态加载jar文件
来源:互联网 发布:跟兄弟连学php老版视频 编辑:程序博客网 时间:2024/05/21 11:18
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">对于做客户端,最烦恼的事情就是。今天升级以后,明天客户反响了一大堆的问题,然后要想解决 就必须再次升级客户端。</span>
1,升级的时候比较着急,代码写的时候出现bug了(大多是空指针的出现,或者条件写错了,或其他)。
2,我们假设的条件不符合当前软件的环境了。
但是呢,用户对频繁升级特别反感,一直想能不能将代码放到服务器端,像WEB那种。有错误了我只需要更新客户端的代码,客户端再次浏览就可以正常运行了。
其实有两种解决办法,(对于android)
1,默默的升级android 客户端 所谓的静默安装,但是这种比较难实现(对于大多android机器,也有权限限制)
2,我的设想是,把自己觉得可能会出现问题的代码在升级之前客户端定义好一些列的接口,将实现放到服务器上。然后通过网络将自己的jar down本地。通过jar 的动态加载机制加载jar文件,通过java 的反射机制调用我们实现类。
好了不多说了,我对这个动态加载 jar 文件 以及利用泛型 得到对应的实例
package com.cyl.utils;import java.io.File;import java.net.URL;import java.net.URLClassLoader;/** * 动态加载jar 文件 通过本地文件 或者 网络文件 * @author cyl * * 2016-2-12 */public class LoadJarFile {//本地文件地址private String localPath;//自定义的类加载器private static MyClassLoader classLoader;public LoadJarFile(String localPath) {super();this.localPath = localPath;init();}/** * 初始化classloader */private void init() {if(classLoader != null){return;}try {URL[] urls = new URL[] {};classLoader = new MyClassLoader(urls, Thread.currentThread().getContextClassLoader());classLoader.addJar(new File(localPath).toURI().toURL());} catch (Exception e) {}}/** * 通过类名得到对应的类的实例 * @param clz 得到对象的对应类型 * @param className 类的全名 * @return */public <T> T getClassByJar(Class<T> clz,String className){try {if(classLoader!=null){Class<?> class1 = classLoader.loadClass(className);if(class1 != null){Object o = class1.newInstance();return (T) o;}}} catch (Exception e) {//这里没有做太多的处理 如:类名字出错了,以及 jar 文件的地址出错了return null;}return null;}/** * 自定义的classloader * @author cyl * * 2016-2-12 */static class MyClassLoader extends URLClassLoader { public MyClassLoader(URL[] urls) { super(urls); } public MyClassLoader(URL[] urls, ClassLoader parent) { super(urls, parent); } public void addJar(URL url) { this.addURL(url); } }}
0 0
- 动态加载jar文件
- Java动态加载jar文件
- Android动态加载jar文件
- JAVA 动态(手动)加载jar文件
- android 动态加载jar/dex文件
- 通过URLClassLoader实现动态加载jar文件
- Android动态加载jar,dex,apk文件
- Java 动态加载jar和class文件
- Java中动态加载jar文件和class文件
- Java中动态加载jar文件和class文件
- Java中动态加载jar文件和class文件
- Java动态加载jar
- android 动态加载jar
- android动态加载jar
- Java动态加载Jar
- Android动态加载jar
- 动态加载jar
- android动态加载jar
- Jquery前端封装 自定义高度CSS模拟 类似于jquery库的写法
- POJ3624 01背包问题
- 学习CUDA--硬件的简单学习
- CF611D 【分割字符串使得形成的数字数组呈递增状态】的方法数
- android下载网络数据的几种方法
- 动态加载jar文件
- 关于coursera上Learning How to Learn课程的读书笔记
- Light OJ 1158 Anagram Division(状压+数位DP)
- 干货!谷歌推荐的技术能力提升指南
- GCD线程的应用
- mysql 插入效率问题
- 二级指针
- 页面居中总结
- 2016 MCM/ICM E 题渣渣论文