java如何通過類載入器載入類和jar包
阿新 • • 發佈:2019-01-24
場景:
把專案中要用到的class檔案和jar放到D:\loader\terry\codex目錄下,如何讓專案通過程式碼的方式實現載入和使用這些類呢?
方案:通過URLClassLoader構造D:\loader\terry\codex這個路徑下的類載入器,在通過Java反射機制進行例項化使用這些類
例子:
HelloWorld.java:
package terry.codex; /** * @編寫人: yh.zeng * @編寫時間:2017-12-3 下午2:29:57 * @檔案描述: todo */ public class HelloWorld { public void sayHello(){ System.out.println("HelloWorld!"); } }
Test.java:
import java.io.File; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; /** * @編寫人: yh.zeng * @編寫時間:2017-12-3 下午2:26:59 * @檔案描述: todo */ public class Test { public static void main(String args[]){ String fileUrlString = new File("D:\\loader").toURI().toString(); fileUrlString = fileUrlString.replaceAll("!/", "%21/"); try { ClassLoader classLoader = new URLClassLoader(new URL[]{new URL(fileUrlString)}); Class HelloWorldClazz = classLoader.loadClass("terry.codex.HelloWorld"); Object helloWorld = HelloWorldClazz.newInstance(); Method method = helloWorld.getClass().getMethod("sayHello", null); method.invoke(helloWorld, null); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }