Java 從Jar文件中動態加載類

jopen 11年前發布 | 15K 次閱讀 Java Java開發

Java: 使用Java中的ClassLoader搭配上反射功能就能實現從Jar文件中動態加載類

由于開發的需要,需要根據配置動態加載類,所以簡單測試了一下JAVA動態加載類

定義接口

package loader;

public interface HelloIface {

    public String hello();          public String sayHi();

}</pre>

實現接口

在其他插件類實現此接口,并導出為jar,如D:/tmp/test.jar

package loader;

public class HelloImpl implements HelloIface{

    @Override
    public String hello() {
        return "hello,JAVA世界";
    }

    @Override
    public String sayHi() {
        return "Hi,JAVA World";
    }
}

動態加載類

import java.net.URL;
import java.net.URLClassLoader;

import loader.HelloIface;

public class Main {
    public static void main(String[] args) {

        String classPath = "loader.HelloImpl";// Jar中的所需要加載的類的類名

        String jarPath = "file:///D:/tmp/test.jar";// jar所在的文件的URL

        ClassLoader cl;
        try {
            // 從Jar文件得到一個Class加載器
            cl = new URLClassLoader(new URL[] { new URL(jarPath) });
            // 從加載器中加載Class
            Class<?> c = cl.loadClass(classPath);
            // 從Class中實例出一個對象
            HelloIface impl = (HelloIface) c.newInstance();
            // 調用Jar中的類方法
            System.out.println(impl.hello());
            System.out.println(impl.sayHi());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!