`

Classloader加载类的问题探讨

阅读更多
首先在C:\Program Files\Java\jdk1.6.0_10\lib下面创建一个String类
查看classpath,发现java_home/lib其实就在classpath下面
(如果你)
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Helper {
	public static void main(java.lang.String []args){
			new Helper().read("String.class");
	}
	public void read(java.lang.String f){
		ClassLoader cl=this.getClass().getClassLoader();
		out(cl);
		out("---------");
		out(cl.getParent().getParent());
		out("---------");
//		out(ClassLoader.getBootstrapClassPath());
		InputStream in=cl.getResourceAsStream(f);
		int len=0;
		byte b[]=new byte[1023];
		if(in==null){
                      out("null");
                   }else
                  {
                   out("ok");
                   }
         new String().output();
       }
	public  void out(Object o){
		System.out.println(o);
	}
}

这样运行的是你自己的String的output方法
String.class可以在当前的classpath,或者在jdk、lib下面!
编译的时候 他就会在classpath中寻找需要加载的包
也就是说 你在classpath下面放java文件,就会被编译!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics