1.类未找到
Exception in thread "main" java.lang.NoClassDefFoundError:类名
Caused by: java.lang.ClassNotFoundException:类名
这种异常未未发现类异常,是由于编译的时候未找到该类而报异常,一般原因是由于缺少项目所需jar包导致。一般来说,项目A调用了项目B所打成的jar包中的类的话,那么项目B所需要的jar包也应该同时导入项目A中。
处理方法:一层层找项目所需jar包及底层项目所需jar包,从中找到所需要的类。
补充:运行Spark时出现,项目与所需class文件不在同一包内,导致类未找到,虽然能导入,也能编译,但无法运行。
2.方法未找到
Exception in thread "main" java.lang.NoSuchMethodError: 类名.方法名
这种异常是由于编译的时候未找到该方法而报异常,一般原因是因为方法不存在或者是方法参数列表有误(包括某些参数可能为空等情况)。
处理方法:首先判断类是否找到,然后到该方法所在的类中,添加或者修改方法。
补充:NoSuchMethodError之后若紧接着出现(形参列表)+ Ljava/lang/String或者Ljava/lang/list,就说明数组出现了问题,数组类型不匹配。
3.内存溢出
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
Java虚拟机内存溢出
处理方法:可参考运行Spark常见问题处理方法(持续更新中......)其中第二点所描述方法。
4.算术运算错误
Exception in thread "main" java.lang.java.lang.ArithmeticException
算术运算出现错误,比如分母为零等
处理方法:根据Exception之后陆续报出的异常出现位置进行修改即可。
5.数组越界
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
这种异常出现的原因是由于根据数组元素下标访问数组超出了数组原有长度,原因有二:1,数组长度过短,一般为空;2,访问数组元素下标值过大或者过小,遍历等操作设置参数有误。
处理方法:首先判断数组长度,而后判断访问下标值大小,一般可用数组.length来进行遍历等操作。
6.空指针
Exception in thread "main" java.lang.NullPointerException
这种异常出现的原因是对象为空,而后调用这个对象所在类的其他方法时报此异常。
处理方法:找出实例化时对象为空的具体原因,具体问题具体分析。
7.String转其他类型
Exception in thread "main" java.lang.NumberFormatException
由于在将String类转换为其他类如int等时出现异常,一般后续会输出日志说明异常所在位置,及转换出错类型。
处理方法:强行转换容易出现这种问题,搞清楚数具体数值及类型是关键。