转载自 3种常见的Class级别的错误

ClassNotFoundException

很明显,这个错误是 找不到类异常,即在当前classpath路径下找不到这个类。

ClassNotFoundException继承了Exception,是必须捕获的异常,所以这个异常一般发生在显示加载类的时候,如下面两种方式显示来加载类并要捕获异常。

public static void main(String[] args) {try {Class.forName("com.User");} catch (ClassNotFoundException e) {e.printStackTrace();}

    try {Test.class.getClassLoader().loadClass("com.User");} catch (ClassNotFoundException e) {e.printStackTrace();}

}

当无法找到对应的类时都会抛出ClassNotFoundException异常。

java.lang.ClassNotFoundException: com.Userat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at com.test.user.Test.main(Test.java:15)

NoClassDefFoundError

这是虚拟机隐式加载类出现的异常。

这个异常继承了Error类,一般发生在引用的类不存在,即类、方法或者属性引用了某个类或者接口,如果目标引用不存在就会抛出这个异常。

import org.jdom2.input.DOMBuilder;
public class MyDomBuilder extends DOMBuilder{
}
public static void main(String[] args) {MyDomBuilder builder = new MyDomBuilder();
}

MyDomBuilder继承了DOMBuilder,如果把DOMBuilder所属的jar包范围设置为provided,即运行时找不到DOMBuilder类就会报错。

Exception in thread "main" java.lang.NoClassDefFoundError: org/jdom2/input/DOMBuilderat java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:763)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)at java.net.URLClassLoader.access$100(URLClassLoader.java:73)at java.net.URLClassLoader$1.run(URLClassLoader.java:368)at java.net.URLClassLoader$1.run(URLClassLoader.java:362)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:361)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at com.test.user.Test.main(Test.java:8)
Caused by: java.lang.ClassNotFoundException: org.jdom2.input.DOMBuilderat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)... 13 more

先报出ClassNotFoundException,然后引发NoClassDefFoundError。

所以,以上两个错误都要确保加载类或者引用类都要在classpath路径下。

ClassCastException

类转换异常,这个错误一般发生在一个对象强制转换类型的时候,如将一个String强制转换成Integer就会报这个错。

这个异常继承了运行时异常RuntimeException,不需要捕获的异常。为了避免报这个错,在转换之间可以先用instanceof判断下是不是该类的引用再转换。如果是集合类型,最好指定集合里面的泛型。

public static void main(String[] args) {Object str = "123";Integer i = (Integer)str;
}

字符串"123"强制转换成Integer,然后报错。

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integerat com.test.user.Test.main(Test.java:9)

3种常见的Class级别的错误相关推荐

  1. Java3种错误_3种常见的Class级别的错误

    ClassNotFoundException 很明显,这个错误是 找不到类异常,即在当前classpath路径下找不到这个类. ClassNotFoundException继承了Exception,是 ...

  2. 四种常见的WordPress主题开发错误

    WordPress以其难以置信的灵活性而著称,尤其是在主题和插件开发方面.如果您想查看证明,只需询问一组开发人员他们将如何实现特定功能. 您可能会收到几种不同的方法来实现相同的结果.但是,有了这种灵活 ...

  3. 【干货】3种常见用户体验错误将扼杀好设计

    作为一个数字设计师,不可能同时满足所有人的诉求.客户和利益者有时会误解设计的过程.他们或许知道后端开发和网页的用户体验设计是两种不同的学科,所以,作为设计师,应该成为个无所不知的天才. 考虑到这一点, ...

  4. 【机器学习】机器学习实践中的 7 种常见错误

    编译:伯乐在线 - yixingqingkong,英文:Cheng-Tao Chu 编注:本文作者是 Codecademy 的分析主管 Cheng-Tao Chu,其专长是数据挖掘和机器学习,之前在 ...

  5. 机器学习实践中的 7 种常见错误

    转载自:http://blog.jobbole.com/70684/ 编注:本文作者是 Codecademy 的分析主管 Cheng-Tao Chu,其专长是数据挖掘和机器学习,之前在 Google. ...

  6. MySQL 性能优化:8 种常见 SQL 错误用法!

    声明:转载自 MySQL 性能优化:8 种常见 SQL 错误用法! 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是 ...

  7. 《社交网站界面设计(原书第2版)》——3.15 你是否在犯4种常见的用户onboarding错误...

    3.15 你是否在犯4种常见的用户onboarding错误 让用户注册很难.它需要大量的时间.精力和金钱,然而很多公司在用户首次体验后就失去了他们.不要让你的公司成为其中的一员. 让我们看看可能会有损 ...

  8. vlookup匹配值不唯一_数据对比、数据查询匹配Vlookup函数3种常见错误及解决方案...

    Excel中的Vlookup函数,在大家日常数据处理计算中应用的机会非常多,因为它可以帮助我们完成数据查询匹配.数据对比.但是这个函数在使用的过程中也经常会遇到查询错误的问题.根据实践经验总结,发现主 ...

  9. Dreamwear如何创建javascript_内存管理+如何处理4种常见的内存泄漏

    JavaScript是如何工作的:内存管理+如何处理4种常见的内存泄漏 潮水自会来去,但心志得坚若磐石.即便成不了那根定海神针,也至少不是那随意被拍上岸的野鬼游魂.by 一枚热汤圆 几周前,我们开始了 ...

最新文章

  1. java版电子商务spring cloud分布式微服务b2b2c社交电商 (十四)服务注册(consul)
  2. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1009:带余除法
  3. HTML5 VIDEO标签播放事件流水
  4. 北京科技大学计算机专业博导,北京科技大学计算机与通信工程学院-班晓娟
  5. [转载] Python3入门精通基础教程(合集)
  6. 使用SmartSVN打分支与合并代码
  7. ES6深入浅出_汇总贴
  8. 9008刷机模式写入超时刷机帮_刷机帮教你优思高通刷机工具错误处理方法
  9. Pycharm_EmmyLua断点调试Lua
  10. TUIO学习笔记1-TUIO 1.1 Protocol Specification协议规范/标准
  11. Day9-Python文本数据(DataWhale)
  12. 【Web动画】SVG 线条动画入门
  13. 【测试】优秀软件测试工程师必备的8个能力
  14. android音乐搜索功能实现,撸个应用学Android——空灵音乐本地音乐版
  15. web项目js调用斑马打印机打印二维码
  16. 第十一章 性能与可伸缩性(待续)
  17. vagrant Linux虚拟机与win共享目录时的大小写及共享失败问题(vagrant share folder/synced_folder case sensitivity)
  18. HTML中添加点击链接 进行Skype、QQ、微信对话的问题
  19. 11个经典物联网应用电路方案优选合辑
  20. P6-Windows与网络基础-安装eNSP软件环境

热门文章

  1. Millenium Leapcow POJ - 2111 (千禧年跳牛)(贪心找最长路径,记忆化)
  2. python 语音播放_基于Python编写的语音播放软件
  3. 数据结构----二叉树叶子结点到根节点的高度计算
  4. Java修炼之路——基础篇——平台无关性
  5. Codeforces Round #653 (Div. 3)(A, B, C, D, E1详解)
  6. P2825 [HEOI2016/TJOI2016]游戏
  7. 字符串匹配(多模式匹配篇)
  8. 2018 ICPC Asia Jakarta Regional Contest
  9. Moving On Gym - 102222F
  10. Codeforces Round #694 Div. 2