当前位置: 代码迷 >> J2SE >> 怎样 在代码中加载一个Jar包
  详细解决方案

怎样 在代码中加载一个Jar包

热度:599   发布时间:2016-04-24 01:50:56.0
请教高手 怎样 在代码中加载一个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();        }    }
  相关解决方案