现在要实现一个功能:
给一个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(); } }