不知道这个问题是否和Hibernate有关
不过在加载其他类时都没有问题,就是在加org.hibernate.cfg.Configuration时出错了?
异常代码:
[code]
Name=org.hibernate.cfg.ConfigurationSize=22877
Exception in thread "main" java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file <Unknown>
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at fanry.pub.MyLoader.loadClass(MyLoader.java:52)
at java.lang.ClassLoader.loadClass(Unknown Source)
at fanry.pub.MyLoader.main(MyLoader.java:10)
[/code]执行代码:
[code]
//Created on 2005-12-19
package fanry.pub;import java.io.InputStream;
import java.net.URL;
public class MyLoader extends ClassLoader {
private static int MAX_SIZE = 2000000; public static void main(String[] args) throws Exception {
new MyLoader().loadClass("org.hibernate.cfg.Configuration"); //运行出错
// new MyLoader().loadSysClass("org.hibernate.cfg.Configuration",true); //可以成功
} private Class loadSysClass(String name, boolean resolve)
throws ClassNotFoundException {
Class cls = findSystemClass(name);
// 如有必要,则装入相关的类
if (resolve && cls != null)
resolveClass(cls);
// 把类返回给调用者
return cls;
} /**
 * 装入类
 * @param name 名称
 * @param resolve 是否解析
 * @return 结果
 * @throws ClassNotFoundException 出错
 */
public Class loadClass(String name, boolean resolve)
throws ClassNotFoundException {
URL url = getResource(name.replace('.', '/') + ".class");
if (url == null)
throw new ClassNotFoundException(name);
byte[] data = new byte[MAX_SIZE];
int size;
InputStream stream = null;
try {
stream = url.openStream();
size = stream.read(data);
System.out.println("Name=" + name + "Size=" + size);
} catch (Exception e) {
throw new ClassNotFoundException(e.toString());
} finally {
if (stream != null)
try {
stream.close();
} catch (Exception e) {
}
}
Class cls = defineClass(null, data, 0, data.length);
if (cls == null) //找到类
throw new ClassNotFoundException(name);
if (resolve) //需要解析
resolveClass(cls);
return cls;
}
}
[/code]