zoukankan      html  css  js  c++  java
  • JAVA动态加载JAR包执行程序

    入口代码

    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLClassLoader;
    import dynamic.test.ICarFactory;
    
    public class hello {
    public static void main(String args[])
    {
        System.out.println("Hello world");
        // JAR文件地址
        String jarName = "CarFactory.jar";
        ICarFactory icf=null;
        
        //命名空间 类名称
        String className="dynamic.test.BYDFactory";
        
        File file = new File(jarName);
        URL url=null;
        try {
            url = file.toURL();
        } catch (MalformedURLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        
        URLClassLoader loader = new URLClassLoader(new URL[]{url});
        Class aClass=null;
        try {
            // 接口实例化
            aClass = loader.loadClass(className);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
     
        try {
            icf = (ICarFactory)aClass.newInstance();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        icf.makeCar();
    }
    }

    接口类

    package dynamic.test;
    public interface ICarFactory {
        public void makeCar();//等待实现的造车方法
    }

    实现类

    //创建BMWFactory类,实现了ICarFactory
    package dynamic.test;
    public class BMWFactory implements ICarFactory {
    //实现了ICarFactory的makeCar()方法
    public void makeCar() {
    System.out.println("BMWFactroy made a 宝马  for you");
    }
    }
    //创建BYDFactory类,实现了ICarFactory
    package dynamic.test;
    public class BYDFactory implements ICarFactory {
    //实现了ICarFactory的makeCar()方法
    public void makeCar() {
    System.out.println("BYDFactroy 生产  一辆  比亚迪  for you");
    }
    }
  • 相关阅读:
    手机获取ip地址
    CoreGraphics 自定义button
    抽奖及背景图片的透明度设置时连着转盘图片也跟着虚幻解决方法
    多个UIcollctionView,返回个数不对错误
    collectionview item 间距
    判断键盘的高度
    orcle 11g 的安装图解
    clone()详解
    isAssignableFrom ,isInstance , Instanceof() 区别
    三元表达式
  • 原文地址:https://www.cnblogs.com/cwfsoft/p/3651864.html
Copyright © 2011-2022 走看看