zoukankan      html  css  js  c++  java
  • 动态加载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
  • 相关阅读:
    [bzoj] 2565 最长双回文串
    [codeforces] 17E Palisection
    luogu P3267 [JLOI2016/SHOI2016] 侦查守卫
    181020-181021 模拟 题解
    luogu P2571 [SCOI2010]传送带
    poj1064 Cable master
    poj1422 Air Raid
    luogu P2512 [HAOI2008]糖果传递
    CF549H Degenerate Matrix
    左偏树基础教学
  • 原文地址:https://www.cnblogs.com/liqiu/p/3950539.html
Copyright © 2011-2022 走看看