首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ClassLoader 与 URLClassLoader 的用法

2013-01-25 
ClassLoader 与 URLClassLoader 的用法!转自: http://blog.csdn.net/suiusoar/article/details/7530191读

ClassLoader 与 URLClassLoader 的用法!

转自: http://blog.csdn.net/suiusoar/article/details/7530191

    读取配置文件中的信息

配置文件的内容:ClassLoader 与 URLClassLoader 的用法

用URLClassLoader读配置文件内容:ClassLoader 与 URLClassLoader 的用法

import java.io.IOException;import java.net.URL;import java.net.URLClassLoader;import java.util.Properties;public class Testext {public static void main(String[] args) throws IOException {Properties properties = new Properties();URL[] urls = new URL[] { new URL("file:/"+ System.getProperty("user.dir") + "/ravageWeb/") };URLClassLoader ucl = new URLClassLoader(urls);//ClassLoader cl = Testext.class.getClassLoader(); //这两行也可以不写//cl = ucl; //如果写,下面就要改为:cl.getResourceAsStream...properties.load(ucl.getResourceAsStream("resources/testpro.properties"));System.out.println(properties.getProperty("sui"));}}

遇到的问题:1. "/ravageWeb/" 中第二个 / 可写可不写。 但是若改为 "/ravageWeb/resources/" 则resources后必须加 / 否则报NullPointerException

用ClassLoader读配置文件内容:ClassLoader 与 URLClassLoader 的用法

import java.io.IOException;import java.util.Properties;public class Testext {public static void main(String[] args) throws IOException {Properties properties = new Properties();properties.load(Testext.class.getClassLoader().getResourceAsStream("resources/testpro.properties"));System.out.println(properties.getProperty("sui"));}}

?

总结:很显然ClassLoader与URLClassLoader的区别是:

ClassLoader只能读位于classpath下的文件(即:resources/testpro.properties必须放到src目录下,编译后进入bin目录);

而URLClassLoader可以读任意目录下的文件!

2. 载入一个类

用ClassLoader载入一个类:

ClassLoader 与 URLClassLoader 的用法

import java.io.IOException;public class Testext {public static void main(String[] args) throws IOException,ClassNotFoundException {Class c = Testext.class.getClassLoader().loadClass("stalk.STalkClient");System.out.println(c.getName());//输出:stalk.STalkClient}}

?

用URLClassLoader载入一个类:

ClassLoader 与 URLClassLoader 的用法

import java.io.IOException;import java.net.URL;import java.net.URLClassLoader;public class Testext {public static void main(String[] args) throws IOException,ClassNotFoundException {URL[] urls = new URL[] { new URL("file:/"+ System.getProperty("user.dir") + "/ravageWeb/") };URLClassLoader ucl = new URLClassLoader(urls);Class c = ucl.loadClass("NoPackage");System.out.println(c.getName());}}


遇到的问题:"/ravageWeb/" 中第二个 / 必须写,否则报ClassNotFoundException

?

总结:

ClassLoader只能load位于classpath(src目录)下的类;

而URLClassLoader可以load任意目录下的类!

?

?

?

热点排行