首页 > 代码库 > 动态加载jar包
动态加载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); }}
四、测试结果
helloworldddddd
动态加载jar包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。