Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Java SE 综合讨论区
打印话题 寄给朋友 订阅主题 |
作者 | 类装载时在当前执行类编译时存在,却无法再找到?? |
skyandfly
发贴: 17 积分: 0 |
于 2005-08-29 21:35
我想通过类装载器,装载一个类来运行,可是他却抛出: java.lang.NoClassDefFoundError: thread (wrong name: thread/thread) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at loader.PlayerLoader.findClass(TestLoader.java:32) at loader.TestLoader.main(TestLoader.java:53) Exception in thread "main" 装载类: class PlayerLoader extends ClassLoader{ public Class findClass(String name)throws ClassNotFoundException{ FileInputStream in = null; int length = 0; try { in = new FileInputStream("./bin/thread/" + name+".class"); length = in.available(); if(length == 0) throw new ClassNotFoundException(name); byte[] buf = new byte[length]; in.read(buf); return defineClass("thread",buf,0 ,buf.length); } catch (IOException e) { }finally{ try { if(in != null) in.close(); } catch (IOException e1){} } System.out.println("he"); return null; } } public class TestLoader { public static void main(String args[])throws InstantiationException, IllegalAccessException{ String name = "thread"; PlayerLoader loader = new PlayerLoader(); try { Class c = loader.findClass(name); System.out.println("hello"); thread t = (thread)c.newInstance(); t.start(); } catch(ClassNotFoundException e){} } } 被装载的.class文件的类如下: public class thread extends Thread{ public volatile boolean bool = true; public synchronized void put() throws InterruptedException{ while(!bool) wait(); bool = false; System.out.println(" the put !"); notifyAll(); } public synchronized String get(int i)throws InterruptedException{ while(bool) wait(); bool = true; System.out.println(" the get !"); notifyAll(); return "get"; } public void run(){ try{ put(); get(2); print(); }catch(InterruptedException e){ } } public void print()throws InterruptedException{ sleep(2000); System.out.println("the print"); } public static void main(String args[]){ new thread().start(); } } 请问这是怎么回事情?我用打印buf发现里面有数据呀! Java应用者与<IDE/环境> |
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
4464 | 类装载时在当前执行类编译时存在,却无法再找到?? | skyandfly | 2805 | 2005-08-29 21:35 |
3410 | Re:类装载时在当前执行类编译时存在,却无法再找到?? | wonderfuture | 143 | 2005-09-01 06:39 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |