工作中经常遇到一些java异常,这里记录一下自己遇到过的一些异常。
1.使用hibernate的时候遇到的一种异常:
unexpected token
原因:hql的语法不对。(本人使用的时候调用错了封装到BaseDao的底层方法)
解决办法:检查自己hql语句的语法。
2.OutOfMemoryError中的一种异常:
PermGen space
原因:JVM中永久区域内存不足
解决办法:自己设置堆的内存或者重启服务器
windows修改catalina.bat/linux修改catalina.sh文件中第一行,Xms:堆内存初始空间,Xmx:堆内存最大空间
StackOverflowError
异常原因:栈的深度超过虚拟机分配给线程的栈的大小。
解决办法:这种情况一般是由于代码的逻辑中出现了死循环,debug找到这个死循环就好了。
3.Mybatis中排序传值的问题
There is no getter for property named 'param' in 'class java.lang.String'
原因:Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取 string.xxx 值,如果没在在方法中定义,则会抛异常报错。
解决办法:映射文件中改为${},因为使用#{}会把拿到的参数值转为字符串,例如:ORDER BY ${param}
在dao层中传入的形参前加上@Param(value="param")