在硬盘上的字节码(.class文件)是如何或用什么加载到jvm里面的内存中的???? java 类加载 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 果断是ClassLoader,自己实现的ClassLoader的findClass里可以读取class文件,把读到的byte[]传递给defineClass,这样就完成了加载class文件。举个例子:public class PathClassLoader extends ClassLoader { private File dir; public PathClassLoader(String path) { dir = new File(path); } @Override protected Class<?> findClass(String name) throws ClassNotFoundException { if(dir != null) { File clazzFile = new File(dir, name + ".class"); if(clazzFile.exists()) { FileInputStream input = null; try { input = new FileInputStream(clazzFile); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while((len = input.read(buffer)) != -1) { baos.write(buffer, 0, len); } return defineClass(name, baos.toByteArray(), 0, baos.size()); } catch(Exception e) { throw new ClassNotFoundException(name, e); } finally { if(input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } } } return super.findClass(name); }} 遇到所谓的“过大的整数”错误! DatagramSocket在多线程下使用的问题 我今天会结贴的,垃圾回收站的处理机制,是个笔试题。 tomcat 6.0.10中开启(/servlet/*)功能 关于流创建实例的嵌套问题 超简单问题::::::JSP中如何判断记录为空?!输出"暂无记录!". 请问有没有接受过 北大青鸟 或niit技术培训的,请说一下感受好嘛!我想去接受培训,但是不知那个号!!谢谢啦!!! 有包与无包 怎么使getModifiers? 我要下载jdk? iframe读取数据库中图片的困惑 clip不规则形状边有锯齿怎么办?
举个例子:
public class PathClassLoader extends ClassLoader {
private File dir;
public PathClassLoader(String path) {
dir = new File(path);
}
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
if(dir != null) {
File clazzFile = new File(dir, name + ".class");
if(clazzFile.exists()) {
FileInputStream input = null;
try {
input = new FileInputStream(clazzFile);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while((len = input.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
return defineClass(name, baos.toByteArray(), 0, baos.size());
} catch(Exception e) {
throw new ClassNotFoundException(name, e);
} finally {
if(input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
return super.findClass(name);
}
}