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");
    }
    }
  • 相关阅读:
    vue : 无法加载文件 C:UsersXXXAppDataRoaming pmvue.ps1,因为在此系统上禁止运行脚本
    js全屏和退出全屏浏览器
    js 如何保存代码段并执行以及动态加载script
    计算年龄,精确到年月日
    js闭包问题
    构造函数和继承方法
    js 箭头函数不适用的场景
    获取一组数据的最大值和最小值
    地图
    json传输
  • 原文地址:https://www.cnblogs.com/cwfsoft/p/3651864.html
Copyright © 2011-2022 走看看