对于很对方法,如何加载和寻找类,我做了一个小小的总结,这里用代码表示
A.java 和 B.java放在同一包下,再各种情况下,A如何寻找B,默认是在Eclipse编辑环境下
URL url = A.class.getProtectionDomain().getCodeSource()
.getLocation();
System.out.println(url);
结果(未打成JAR时):
file:/C:/Documents and Settings/Administrator.MICROSOF-B715C3/workspace/T/bin/
结果(打成JAR时)
file:/C:/Documents and Settings/Administrator.MICROSOF-B715C3/%e6%a1%8c%e9%9d%a2/1.jar
那么如何加载这个jar中的类呢
JarFile file = new JarFile(url.getFile());
接下来就是URLClassLoader得方法了,这部分参看我得另外一篇:http://blog.youkuaiyun.com/neusoftware_20063500/archive/2009/02/15/3894289.aspx
URL url = ClassLoader.getSystemResource("B.class");
System.out.println(url);
结果(未打成jar)
file:/C:/Documents and Settings/Administrator.MICROSOF-B715C3/workspace/T/bin/B.class
结果(打成jar)
jar:file:/C:/Documents and Settings/Administrator.MICROSOF-B715C3/%e6%a1%8c%e9%9d%a2/1.jar!/B.class
InputStream resourceAsStream = A.class.getResourceAsStream("B.class");
System.out.println(resourceAsStream);
结果(未打成jar)是class文件得流
结果(打成jar)是jar得输入流
http://hi.baidu.com/a26816523/item/5c9fce339035d4be623aff76