现在要实现一个功能:
给一个Jar的包 A.jar 要在我们的代码中加载(不是用工具加载,而是写代码加载),用那个方法或类来实现?
要求能运行A.jar其中的方法
------解决方案--------------------
用到哪个类就Class.forName()加载
------解决方案--------------------
如果只是要用到A.jar里的方法,没必要这样做。直接导入就行了。
如果是要启动运行A.jar,可以通过命令来现实调用。
Process pr = Runtime.getRuntime().exec("cmd.exe /c JAVA -jar \"" + path + "/A.jar\"");path是jar的路径。
------解决方案--------------------
写代码加载?我就知道Runtime.getRuntime().load("A.jar");
------解决方案--------------------
URLClassLoader 自己去写吧:
- Java code
 
import java.net.URL;import java.net.URLClassLoader;public class ClassLoaderTest {    public static void main(String[] args) throws Exception {        URL[] url = { new URL("file:D:/ant/gao-util/dest/gao-jpa.jar") };        URLClassLoader classloader = new URLClassLoader(url);                Class<?> clazz = classloader.loadClass("net.blogjava.frankiegao123.jpa.query.DateQuery");        Object dateQuery = clazz.newInstance();        System.out.println(dateQuery);    }}
------解决方案--------------------
- Java code
 
    public static void main(String[] args) {        try {            URL url = new URL("file:///D:/workspace/test/bin/test.jar");            URLClassLoader urlCL = new URLClassLoader(new URL[] { url });            Class c = urlCL.loadClass("TestClassA");            Method m = c.getMethod("method");                        m.invoke(c.newInstance(), null);        } catch (Exception e) {            e.printStackTrace();        }    }