// 生成JAR包D:\TestClass.jar
package hand.java.loadjar;
public class TestClass { private String sayHello = "Hello World!!"; public String sayHello() { return this.sayHello; }}// 创建一个测试类
package hand.java.loadjar;import java.net.URL;import java.net.URLClassLoader;import java.lang.reflect.Method; public class LoadJarTest { public LoadJarTest(){ try { URL url = new URL("file:D:\\TestClass.jar"); URLClassLoader loader = new URLClassLoader(new URL[]{ url }); // Load class Class<?> myclass = loader.loadClass("hand.java.loadjar.TestClass"); // Gene new object Object myobject = myclass.newInstance(); // Get function Method method = myclass.getDeclaredMethod("sayHello"); // Make the function valid method.setAccessible(true); // Invoke method System.out.println(method.invoke(myobject)); } catch (Exception ex) { ex.printStackTrace(); } } @SuppressWarnings("unused") public static void main(String[] args){ LoadJarTest loadjar = new LoadJarTest(); }}
运行,输出内容:
Hello World!!
package hand.dynamic.jar;import java.io.File;import java.net.MalformedURLException;import java.net.URL;import java.net.URLClassLoader;public class JarLoadUtil { private static String jar_path = "D:\\JAR"; private static URLClassLoader loader = null; // private static String curDir = System.getProperty("user.dir"); private static String separator = System.getProperty("file.separator"); public static URLClassLoader getURLClassLoader() { if (loader == null) { String fileNames[] = new File(jar_path).list(); if (fileNames != null && fileNames.length > 0) { URL urls[] = new URL[fileNames.length]; for (int i = 0; i < fileNames.length; i++) { try { // if (fileNames[i].equals("dom4j-1.6.1.jar")) urls[i] = new URL(jar_path + separator + fileNames[i]); } catch (MalformedURLException e) { System.out.println("加载指定目录下JAR文件出错!"); throw new RuntimeException("加载指定目录下JAR文件出错!", e); } } loader = new URLClassLoader(urls); } } return loader; }}