动态加载jar包(一)

一、编写被调用的类

package com.qunar.helloworld;

public class HelloWorld {

    public String sayHello(){
        return ("helloworld");
    }
}

使用eclipse的export功能导出jar包,放在/Users/liqiu/Documents/workspace/HelloWorld.jar

二、编写调用jar包的类

package com.qunar.studyspring.javajar;

import java.net.URL;
import java.net.URLClassLoader;
import java.lang.reflect.Method;

public class JavaJar {
    public String doJar() {
        try {
            URL url = new URL("file:/Users/liqiu/Documents/workspace/HelloWorld.jar"); // 这里需要重点看URLClassLoader用法,
            URLClassLoader loader = new URLClassLoader(new URL[] { url }); // URL跟我们日常见到的格式用法不太一样
            Class c = loader.loadClass("com.qunar.helloworld.HelloWorld"); // 在上面找到并加载jar包后,可以通过此
            Object myObject = c.newInstance(); // 函数加载某个类,并使用 newInstance
            // 生成一个新的对象
            Method m = c.getDeclaredMethod("sayHello"); // getDeclaredMethod()方法可以获得
            // 指定名字的方法
            m.setAccessible(true); // setAccessible方法使上面得到的方法可用
            
            System.out.println(m.invoke(myObject)); // 由于sayHello方法返回一个String
            // 使用m.invoke去调用方法m 也就是sayHello
        } catch (Exception ex) {
            System.out.println(ex);
            
        }
        return "ddddd";
    }
}

三、编写测试方法

package com.qunar.studyspring;

import org.junit.Test;

import com.qunar.studyspring.javajar.JavaJar;

public class JarTest {

    @Test
    public void sayHello(){
        JavaJar javajar = new JavaJar();
        String ss = javajar.doJar();
        System.out.println(ss);
    }
}

四、测试结果

helloworld
ddddd

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值