`
huzhenyu
  • 浏览: 188171 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

动态加载jar

    博客分类:
  • JAVA
阅读更多
在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包

    动态加载jar包是一种在程序运行时按需引入外部库或者组件的技术,这使得应用程序更加灵活,可以适应不同的环境和需求。这种技术广泛应用于插件系统、框架开发以及服务升级等场景,因为它允许程序在不重启的情况下...

    Java 动态加载jar文件示例

    在Java编程语言中,动态加载jar文件是一种关键的特性,它允许程序在运行时加载新的类库或组件,而不是在编译时静态地链接。这种技术对于实现插件式开发或者模块化系统至关重要,因为它提供了灵活性和可扩展性。下面...

    java 动态加载jar包

    在Java编程语言中,动态加载jar包是一种常见的需求,它允许程序在运行时根据需要加载新的功能或更新现有的模块,增强了软件的灵活性和可扩展性。动态加载jar包技术主要涉及Java的反射机制、类加载器和插件系统。下面...

    android动态加载jar

    在Android开发中,动态加载JAR(Java Archive)文件是一种常见的技术,它允许应用程序在运行时加载和执行不在原始APK文件中的代码。这种技术有多种应用场景,例如更新功能、热修复、插件化框架等。下面将详细介绍...

    android动态加载jar文件

    有些项目需要(根据机型)动态加入jar包,该资源包含了一个在android工程中动态加载jar文件的小程序,注释详细,需要注意我们的jar文件是需要经过dx处理过的,可参考博客:...

    JAVA动态加载JAR zip包

    在Java编程中,动态加载JAR或ZIP包是一项重要的技术,它允许程序在运行时根据需求加载外部库,而不是在编译时静态地链接。这种技术对于实现插件化、模块化系统,或者处理频繁更新的组件非常有用。下面将详细讲解如何...

    springboot动态加载jar包到容器中,并映射为接口

    ### Spring Boot 动态加载 Jar 包到容器中并映射为接口的技术解析 #### 一、背景介绍 在实际的开发过程中,我们经常会遇到这样的需求:系统需要根据不同的业务场景来动态地加载不同的功能模块或者组件。这些功能...

    动态加载jar包的实现

    在Java编程环境中,动态加载jar包是一项重要的技术,它允许我们无需重启服务器就能引入新的功能或更新已有的类。这在大型系统维护和迭代中尤为关键,因为它提高了系统的灵活性和可扩展性。以下是对"动态加载jar包的...

    android 动态加载jar代码

    在Android开发中,动态加载jar代码是一种常见的技术,它允许应用程序在运行时加载新的功能或者更新已有代码,而无需重新安装整个应用。这种方式可以提高应用的灵活性和可维护性,尤其是在处理大型应用或需要频繁更新...

    JAVA动态加载JAR文件

    JAVA动态加载JAR文件以及反射调用其方法

    android动态加载jar文件中的图片

    动态加载jar文件中的图片在Android中并非直接支持的功能,但通过自定义实现,我们可以绕过限制。关键在于正确地读取和解析jar文件,以及将图片数据转换为Android的`Bitmap`对象。这个过程涉及到了文件流操作、Zip...

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...

    Android中动态加载jar包

    ### Android中动态加载jar包详解 #### 一、概述 在Android开发中,有时需要实现动态加载外部的jar包或类文件。这种技术可以提高应用的灵活性和扩展性,允许开发者在不重新编译和发布整个应用的情况下更新部分功能...

    Java URLClassLoader动态加载jar包1

    Java URLClassLoader 是Java标准库中的一个类加载器,它允许我们动态地从指定的URL位置加载类和资源。这个功能在开发插件系统、热部署或者处理多种版本库的场景中非常有用。从JDK 1.2开始,`java.net.URLClassLoader...

    Android动态加载jar/dex,基于android studio+android开发艺术其他demo

    在Android应用开发中,动态加载jar或dex文件是一种常见的优化技术,它允许应用程序在运行时加载新的代码或库,而不必通过更新整个apk来实现功能的扩展或修复。这种技术通常用于热修复、插件化或者模块化开发,能够极...

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

    这个问题通常发生在使用`Class.forName()`或`ClassLoader.getSystemClassLoader().loadClass()`尝试动态加载第三方JAR中的类时。 Java虚拟机(JVM)的类加载机制是导致此问题的关键。自JDK 1.2以来,JVM采用委托...

    Java 动态加载jar和class文件实例解析

    Java 动态加载 jar 和 class 文件实例解析 Java 动态加载 jar 和 class 文件实例解析是 Java 语言中的一种重要机制,用于加载和实例化类文件。在 Java 中,类文件加载是动态的,也就是说只有当我们需要使用某个类时...

Global site tag (gtag.js) - Google Analytics