锁定老帖子 主题:考你一个最基础的Java问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-07-04
呵呵 ![]() ![]() 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-07-04
显式调用和非显式的区别吧
|
|
返回顶楼 | |
发表时间:2006-07-04
当你使用字符串去转换类,也就是尝试使用Class.forName等方法去获得一个类的时候,如果这个类不存在,就会抛出ClassNotFoundException。
而你编译的类无错,但是在运行时刻,缺乏某些必须的类时,就是抛出NoClassDefFoundError。这种情况最常见就是你在编译时,在classpath下有这个类,但是在运行时,你的classpath缺少这个类。 |
|
返回顶楼 | |
发表时间:2006-07-04
ClassNotFoundException发生在装入阶段。
当应用程序试图通过类的字符串名称,使用常规的三种方法装入类,但却找不到指定名称的类定义时就抛出该异常。 NoClassDefFoundError: 当目前执行的类已经编译,但是找不到它的定义时 也就是说你如果编译了一个类B,在类A中调用,编译完成以后,你又删除掉B,运行A的时候那么就会出现这个错误 |
|
返回顶楼 | |
发表时间:2006-07-05
加载...
连接... |
|
返回顶楼 | |
发表时间:2006-07-05
ideafrog 写道 加载...
连接... 正解~ 哎,为啥NoClassDefError不像ClassNotFoundException那样给出类的名字呢,真恶心~sun的那帮家伙写代码真的太粗线条了 ![]() |
|
返回顶楼 | |
发表时间:2006-07-07
说到最好,你还是没有理解两者的差别,反而倒过来怪sun粗线条。唉,有些遗憾............
|
|
返回顶楼 | |
发表时间:2006-07-09
凤舞凰扬 写道 说到最好,你还是没有理解两者的差别,反而倒过来怪sun粗线条。唉,有些遗憾............
其实 sun的确挺粗的 |
|
返回顶楼 | |
发表时间:2006-07-21
ClassNotFound似乎没有什么疑虑
但这个NoClassDef确实让人有点困惑,据javadoc显示是从LinkError来的,应该是link的错,不过还是不知怎么link法。 直接搜了一下api source只有两个类 RMIClassLoader 里面是这样写的 try { Class providerClass = Class.forName(providerClassName, false, ClassLoader.getSystemClassLoader()); return (RMIClassLoaderSpi) providerClass.newInstance(); } catch (ClassNotFoundException e) { throw new NoClassDefFoundError(e.getMessage()); 竟然是包装了ClassNotFound 第2个是ClassLoader在defineClass方法里 try { if (!checkName(name, false)) throw new NoClassDefFoundError("Illegal name: " + name); 就是检查一下数组里的class名字 感觉也没什么大用 所以对这个NoClassDef还是一头雾水啊 |
|
返回顶楼 | |
发表时间:2006-09-19
ideafrog 写道 加载...
连接... 能这么总结吗? NoClassDefError是在load .class文件的时候找不到就报这个错了,也就是根本没有加载成功,怎么会是连接错误? |
|
返回顶楼 | |