hzl1984 2009-04-24 13:45
浏览 313
已采纳

[求教] 在加载类时,如何指定所使用的jar包?

有一个同名的类(包名也相同)在很多jar包中出现,但是根据应用,我们需要在实例化的时候特别指定某个jar包中的类。
请问如何才能做到?非常感谢!

  • 写回答

4条回答 默认 最新

  • wanghaolovezlq 2009-04-24 15:20
    关注

    定制自己的类加载器,从指定的jar包中加载类就行了

    一般动态加载类都是直接用Class.forName()这个方法,但这个方法只能创建程序中已经引用的类,并且只能用包名的方法进行索引,比如 Java.lang.String,不能对一个.class文件或者一个不在程序引用里的.jar包中的类进行创建。但使用URLClassLoader 就可以直接根据创建一个单独的.class文件,并且每当重新载入后并实例化后都是最新的方法。类似于jsp,当你在eclipse中改了一个jsp并且存储后,只要刷新页面就可以得到最新的结果而不用重新启动服务器。
    URLClassLoader是在java.net包下的一个类。他的构造函数输入参数需要输入1个URL数组。假设我们有一个编译后的class文件在 C:\URLClass\testClass.class中,URLClassLoader进行加载,其中有个方法为test,我们需要动态加载这个类并且运行test方法

    [code="java"]
    File xFile=new File("d:/xx.jar");
    URL xUrl= xFile.toURL() ;
    URLClassLoader ClassLoader=new URLClassLoader(new URL[]{ xUrl });
    Class xClass=ClassLoader.loadClass("testClass");
    Object xObject=xClass.newInstance();
    Method xMethod=xClass.getDeclaredMethod("test");

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 ESP32使用MicroPyhon开发,怎么获取485温湿度的值,温湿度计使用的鞋子是Modbus RTU
  • ¥50 苹果MGIE项目部署缺少emb权重
  • ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
  • ¥15 单片机adb主机连接手机,usb调试密钥无法保存
  • ¥15 已知X和Y有以下关系,求X和Y的关系式
  • ¥15 net core 同时编辑怎么防止数据多保存了
  • ¥15 matlab做ba模型让其在ba和er规则下生长
  • ¥15 请问Quartus的Verilog代码怎么写?
  • ¥100 Mac 版foxmail 收邮件问题
  • ¥15 QWebEngineView