日期:2014-05-20  浏览次数:20799 次

请教高手 怎样 在代码中加载一个Jar包
现在要实现一个功能:

  给一个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();

        }

    }