如何使用URLClassLoader加载本地的Class文件

2022年7月4日 21点热度 0人点赞

如何使用URLClassLoader加载本地的Class文件,程序设计中可以使用动态加载策略

工具/原料

  • JDK 1.4以上版本,本次测试使用JDK1.6,文本编辑器
  • 命令提示符CMD

方法/步骤

  1. 1

    定义一个接口类方法

    代码:我的包名称叫interFace

    /**

     * Alipay.com Inc.

     * Copyright (c) 2004-2015 All Rights Reserved.

     */

    package interFace;

    /**

     * 

     * @author wb-lilei.u

     */

    public interface commInterFace {

        public void sayHello(String hello);

    }

  2. 2

    2.定义实现类

    代码:包名称为impl(注意这里的包后面会用到)

    /**

     * Alipay.com Inc.

     * Copyright (c) 2004-2015 All Rights Reserved.

     */

    package impl;

    import interFace.commInterFace;

    /**

     * 

     * @author wb-lilei.u

     * @version $Id: commInterFaceImpl.java, v 0.1 2015年11月19日 下午1:54:31 wb-lilei.u Exp $

     */

    public class commInterFaceImpl implements commInterFace {

        /** 

         * @see interFace.commInterFace#sayHello(java.lang.String)

         */

        @Override

        public void sayHello(String hello) {

            System.out.println("hello" + hello);

        }

    }

  3. 3

    在命令行提示符(cmd)编译这两个文件:一定要一起编译单独编译实现类方法会不通过

    javac  impl\*.java interFace\*.java

  4. 4

    编写测试类方法:

    import interFace.commInterFace;

    import java.net.URL;

    import java.net.URLClassLoader;

    /**

     * Alipay.com Inc.

     * Copyright (c) 2004-2015 All Rights Reserved.

     */

    /**

     * 

     * @author wb-lilei.u

     */

    public class testLoadClass {

        /**

         * 

         * @param args

         */

        public static void main(String[] args) {

            try {

                URLClassLoader loader = new URLClassLoader(

                    new URL[] { new URL("file:D:\\workspaces\\") });

    //这里的D:\\workspaces\\是文件的根地址

                Class<commInterFace> myClass = (Class<commInterFace>) loader

                    .loadClass("impl.commInterFaceImpl");

    //impl.commInterFaceImpl是后面具体的地址因为一定要包含impl这一段这

    //是因为在创建的时候使用了impl这个包所以一定要一起

                myClass.newInstance().sayHello("ssssssssssssss");

    //利用Java反射机制创建实例测试方法

            } catch (Exception e) {

                // TODO: handle exception

                e.printStackTrace();

            }

        }

    }

    END

注意事项

  • 编译实现类的java文件的时候要和接口类一起编译要不然会报错,地址引用不到
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部

laozhao

这个人很懒,什么都没留下

文章评论