`

常见异常整理(转)

    博客分类:
  • S2SH
阅读更多

我有个想法,就是把在编程过程中的所遇到的Exception都收集起来,这样可以渐渐的减少,或者不在重复遇到这样的异常,或者在以后遇到是也可以立刻回忆起来产生这种异常的原因,以便快速解决。

 

我自己收集了一些,包括解决的方法,可能有的异常是很低级的,但是发生的场景有可能不一样。总之,一点一点积累吧,一方面提高自己,另一方面也希望我遇到的这些异常,也能帮助大家尽快解决问题。这就是我的目的。如果有不合理的解决方法,也希望大家给我指证。

 

当然,大家也可以把自己的异常也加进来,这样就是一个异常处理集合啦,毕竟一个人的力量是有限的,大家一起努力吧!

 

先贴一点异常,希望能起到抛砖引玉的作用。有些问题比较低级,但也是提醒自己不要再犯这样低级的错误!

 

1.

 

org.hibernate.PropertyValueException: not-null property references a null or transient value: netctoss.entity.Users.loginName

 

字面意思:一个不允许为Null的属性引用了一个为Null的或者无效的值。

 

原因:在***.hbm.xml中的

 

<property name="ProjPortfolioID" column="ProjPortfolioID"

 

    type="big_decimal" not-null="true" length="10" />

 

中,not-null="true",这说明属性ProjPortfolioID 不允许为空,而在ActionForm中未给他赋值,则就为空,所以就会报错!

 

就是插数据的时候把相关联的对象new好

 

RightsAddForm rf = (RightsAddForm) form;

 

Rights right = rf.getRight();

 

Modules modules = new Modules();

 

modules.setName(rf.getModules());

 

Operations operations = new Operations();

 

operations.setName(rf.getOperations());

 

right.setModules(modules);

 

right.setOperations(operations);

 

rightsBiz.addRight(right);

 

return mapping.findForward("next");

 

2.

 

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'users0_.enrolldate' in 'field list'

 

这是由于字段名字命名不统一

 

3.

 

edit 时,读不到form中的数据 <html:text property="pricings.name" /> 后面不可添加 value 属性,因为首先回去查找该属性。

 

4.

 

java.lang.NullPointerException

 

at netctoss.action.UserServicesAction.list(UserServicesAction.java:28)

 

通过join fetch 查找

 

配置文件

 

spring beans : dao, biz

 

actions: path

 

struts action

 

5.

 

Cannot find bean: "org.apache.struts.taglib.html.BEAN" in any scope

 

option 要加标签 <html:option>

6.org.apache.jasper.JasperException: /user/bussupdate.jsp(141,6) Attribute selected invalid for tag option according to TLD

 

标签错误

 

7.

 

17:16:39,563 ERROR AbstractFlushingEventListener:301 - Could not synchronize database state with session

 

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: netctoss.entity.Users

 

8.

 

java.lang.IllegalArgumentException: No bean specified

 

表单ActionForm 读取错误 

 

在edit时,因为 userServices对象 修改时,要通过两个属性来表达

 

poperty 是为保存修改时来用的,因为他有两个外键ID,

 

而显示在页面上要用request.setAttribute() 方法传到页面上,用EL表达式来显示

 

9.

 

javax.servlet.jsp.JspException: Getter for property userServices.price.name threw exception: 

 

org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed

 

继承自泛型的findByPK() 方法,没有join fetch

 

要重载该方法

 

10.

 

javax.el.PropertyNotFoundException: Property 'id' not found on type java.lang.String

 

因为<c:ForEach item="${}">

11.

 

Ajax 编程

要有Action , 和 Javascript

选中用户后,资费列表会显示此用户没有开通的服务资费

//查找当前用户已经存在的服务资费

//将已存在的服务资费从列表中去除后再显示到页面上

 

12.

查询,删除cascade

 

13.

javax.servlet.ServletException: java.lang.ClassCastException: 

netctoss.form.UserServicesCriteriaForm cannot be cast to netctoss.form.UsersCriteriaForm

路径设置问题

 

14.

ava.lang.NullPointerException

at netctoss.dao.impl.UserServicesDaoHibernateImpl.selectByCriteria(UserServicesDaoHibernateImpl.java:53)

是由于hql中

hql.append("select s from UserServices s join fetch s.user u ");

hql.append("where 1=1 ");

if(criteria.getUserName().trim()!=null && !criteria.getUserName().equals("")){

hql.append("and u.name=:name ");

}

if(criteria.getUserServiceLoginName().trim()!=null && !criteria.getUserServiceLoginName().equals("")){

hql.append("and s.loginName=:loginName ");

s 和 u 混淆了

15.

description The requested resource (/userServices/search/update) is not available.

查询表单没加html:标签,由此可见,这个错误信息不一定是路径配置问题

16.

org.hibernate.hql.ast.QuerySyntaxException: unexpected token:

 from near line 1, column 10 [delete s from netctoss.entity.UserServices s where s.user.id=:id]

hql语句有错:delete 后面 不能加 别名

 

17.

java.lang.NumberFormatException: For input string: "user"

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

forward 页面错误

 

18.

13:27:53,587 ERROR ContextLoader:215 - Context initialization failed

org.springframework.beans.factory.BeanCreationException: 

Error creating bean with name 'selectDao' defined in file [C:\tomcat6\webapps\netctoss_01\WEB-INF\classes\applicationContext-beans.xml]: 

Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: 

Invalid property 'sessionFactory' of bean class [netctoss.dao.impl.SelectDaoJdbcImpl]: 

Bean property 'sessionFactory' is not writable or has an invalid setter method. 

Does the parameter type of the setter match the return type of the getter?

 

这是由于selectDao extends JdbcDaoSupport 

要用JDBCTemplate设置,将其注入到dao,再到biz

 

19.

avax.servlet.ServletException: Request[/account/acctyear] does not contain handler parameter named 'listYear'.  

This may be caused by whitespace in the label text.

是由于action 继承了DispatchAction,

配置文件还是用MappingDispatchAction来配置的

如果要用action 继承了DispatchAction, 必须在jsp页面上action="/account.do? 后面加上method=listYear"

 

 

20.

column "duration" not found

原因:

String sql = "select labip, duration/(60*60*1000)  duration from detailyears";

要加别名,否则会认为 duration/(60*60*1000) 为字段名

21.

java.sql.SQLException: Column 'logouttime' not found.

因为两个查询都用了同一个RowMapper, 要保证每一个查询语句都要查处logouttime字段

 

22.

查询语句中,关于时间的查询中 

select labip,  sum(duration/(60*60*1000))  duration from detailyears where logouttime >='2008-01-01 00:00:00' and logouttime <='2008-12-31 00:00:00' group by labip

时间要加‘’,否则会有语法错误

labip 192.168.0.21 也要加引号

 

23.

javax.servlet.ServletException:

 Request[/account] does not contain handler parameter named 'method'.  This may be caused by whitespace in the label text.

 如果要用action 继承了DispatchAction, 必须在jsp页面上action="/account.do? 后面加上method=listYear"

 

 24.****

 页面上删除记录后,数据库里数据还在,没有持久化

 这是因为系统中既要用到Hibernate,也要用到jdbc,

 但是他们没有使用同一个数据源(实际都是同一个数据库,但是打开了两次),因此数据无法持久化,

 必须共享同一个数据源,但是事务管理器可以分开

 

 

25.

org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed

search() 方法中 没有添加 fetech

 

26.账单查询

 

select u.name accountName, u.loginName accountLoginName, d.duration, p.basefee

 

from users u, userservices s , detailyears_2008 d, pricings p

 

where u.id=s.userid 

 

and p.id=s.priceid

 

and d.loginname = s.loginname

 

and u.name="zw"

 

and month(d.logouttime)=4;

 

=======================================================

 

select s.loginName reckonLoginName, d.duration, d.logouttime logintime, p.basefee, p.ratefee, p.name

 

from users u, userservices s , detailmonths_4 d, pricings p

 

where u.id=s.userid 

 

and p.id=s.priceid

 

and d.loginname = s.loginname

 

and u.name="zw"

 

and year(d.logouttime)=2008;

 

select s.loginName reckonLoginName, d.duration, d.logouttime logintime, p.basefee, p.ratefee, p.name

 

from users u, userservices s , detailmonths_4 d, pricings p

 

where u.id=s.userid

 

and p.id=s.priceid

 

and d.loginname = s.loginname 

 

and u.name='zhongwei'  and year(d.logouttime)=2008

 

27. 

 

javax.servlet.ServletException: Request[/reckon] does not contain handler parameter named 'method'.

 

  This may be caused by whitespace in the label text.

 

28.

 

java.lang.NumberFormatException: For input string: "accountName"

 

属性名错误

 

29.

 

分页: 通过一个static 变量保存当前页,和list 效果不一定好

 

30.

 

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

 

PricingsForm pricingsForm = (PricingsForm) form;

 

String name = pricingsForm.getPricings().getName();

 

<tr>

 

<td align="right" valign="top">资费名称:</td>

 

td align="left" valign="top"><input type="text" name="pricings.name" value="" style="WIDTH:170px" onblur="validate()"></td>

 

</tr>

 

通过Javascript 来获得标签的值,在URL上加上一个参数传到Action中

 

var name = document.getElementById("name").value;

 

var requestURL = "${pageContext.request.contextPath}/fee/validate.do?name="+name;

 

31.

采用struts2 + spring + hibernate

 

32.

请教一个问题,

我现在要在页面上用<c:forEach>标签显示一系列的 checkbox,这是对数据表单的修改,我要先将这些数据显示在页面上,然后修改后再提交保存

<c:forEach items="${objects}" var="object">

<input type="checkbox" id="objectName" name="objectName" value="${object.id}" checked="checked">

 ${object.name }|${object.description }

 </forEach>

我这些数据都是从数据库查出来的,如何显示哪个checkbox 已经被选中了?

 

33.

javax.servlet.jsp.JspException: Cannot find bean: "roles.rolerights" in any scope

 

34.

org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of netctoss.entity.Rights.rolerights

 

35.

Hibernate中常见问题 No row with the given identifier exists问题的原因及解决

有两张表,table1和table2.产生此问题的原因就是table1里做了关联<one-to-one>或者<many-to-one unique="true">(特殊的多对一映射,实际就是一对一)来关联table2.

当hibernate查找的时候,table2里的数据没有与table1相匹配的,这样就会报No row with the given identifier exists这个错.(一句话,就是数据的问题!)

假如说,table1里有自身的主键id1,还有table2的主键id2,这两个字段. 如果hibenrate设置的单项关联,即使table1中的id2为null值,table2中id2中有值,查询都不会出错.

但是如果table1中的id2字段有值,但是这个值在table2中主键值里并没有,就会报上面的错! 

如果hibernate是双向关联,那么table1中的id2为null值,但是table2中如果有值,就会报这个错.这种情况目前的解决办法就是改成单项关联,或者把不对应的数据改对!

 

36.

Tomcat中设置远程debug方法

何为远程调试?我们一般调试一个web项目的java代码时,需要将你的tomcat服务器和你的开发工具(比如Jbuilder)集成,或需要工具的一些插件支持(比如Eclipse下的myclipse等),这些方式都是在本地进行,即你的开发工具和tomcat运行在同一台服务器上,如果你的开发工具和服务器不再一台机器上那就需要实现远程调试功能了。

实现方法:

在tomcat的catalina.bat文件中加入下面的设置,当然SET CATALINA_OPTS 变量应该在使用它之前。这是在tomcat启动时设置一些虚拟机参数,使服务器允许远程连接功能,address=5888表示远程连接的端口号,可以设置成任意其他不冲突端口。其他的应用服务器比如weblogic也应该可以设置这些参数,有兴趣的可以测试。

SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5888 

这样就Ok了,重启动tomcat,可以直接独立启动,而不用在eclipes的插件中启动。打开eclipse中的debug设置窗口,选择Remote Java Application ,新建一个debug项,输入服务器IP和刚才设置端口号,点ok就可以进入debug状态了。Jbuilder中同样可以设置Remote Java Application。

 

37.

在授权与认证模块中

一个用户会有多个角色,当一个用户所拥有的两个角色中的权限有冲突时(即一个角色为不允许,而另一个为允许),则根据角色的优先级来确定何种权限。

 

38.

OA

1.组织机构

 

39.

java.lang.SecurityException: class "junit.framework.JUnit4TestCaseFacade"'s signer information does not match signer information of other classes in the same package

解决方法是在java build path的order and export中把junit调整到比较靠前位置。

 

40.

org.hibernate.HibernateException: No CurrentSessionContext configured!

我们使用如下代码获取Session:

 sessionFactory = new Configuration().configure().buildSessionFactory();

 Session session = sessionFactory.getCurrentSession();

     使用getCurrentSession 不对;应该使用openSession 

      参考hibernate api doc 对 openSession 和 getCurrentSession 的说明

41.

 

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'orgManager' is defined

 

42.

 

出现的问题解决: 

 

问题1:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.springframework.util.ClassUtils.<clinit>(ClassUtils.java:67)   at org.springframework.core.io.DefaultResourceLoader.<init>(DefaultResourceLoader.java:52) at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:184) at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:80) at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:58)   at 

 

需要加上:commons-logging.jar log4j-1.2.11.jar 

 

问题2:Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [text.xml]; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException 

 

Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException 

 

    at java.lang.Class.forName0(Native Method) 

 

需要加上:aspectjweaver.jar 

 

问题3:Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logBean' defined in class path resource [text.xml]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces. 

 

Caused by: org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces. 

 

需要加上:cglib-2.1.3.jar 

 

问题4:xception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logBean' defined in class path resource [text.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type 

 

Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type 

 

    at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:180) 

 

需要加上:asm.jar 

 

转载:http://pengchua.javaeye.com/blog/142879 

 

问题5: CGLIB Enhancement failed: com.bowen.domain.Schools 

 

java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V 

 

at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77) 

 

at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:173) 

 

at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) 

 

解决:由于不同版本让我想到了可能会因为其它三方包是不同版本引起的最新的MyEclipse,所以里面的Hibernate也是最新的3.1(它里面还带有一个3.0版本的) 

 

删除  多余的包 Hibernate3.1现象2: 

 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in resource [/WEB-INF/dataAccessContext-hibernate.xml] of ServletContext: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/TransactionManager 

 

java.lang.NoClassDefFoundError: javax/transaction/TransactionManager 

 

原因:缺少jta.jar 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

 

现象3: 

 

java.lang.NoClassDefFoundError: org/dom4j/Attribute 

 

缺dom4j.jar 

 

java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException 

 

缺ehcache.jar 

 

java.lang.NoClassDefFoundError: net/sf/cglib/core/KeyFactory 

 

缺cglib-full.jar 

 

43.

 

<a href="#" onClick="openWin('document.do?method=addInput','470')">

 

44.

 

<input type="hidden" name="method" value="add">

 

<input type="hidden" name="parentId" value="${orgForm.parentId}">

 

45.

 

参数化测试要点:

 

|.测试类必须由Parameterized测试运行器修饰

 

|.准备数据。数据的准备需要在一个方法中进行,该方法需要满足一定的要求:

 

|.. 该方法必须由Pamameters注解修饰

 

|.. 该方法必须为public static 

 

|.. 该方法必须返回Collection类型

 

|.. 该方法的名字不作要求

 

|.. 该方法没有参数

 

 

 

转自:http://blog.csdn.net/kekenow/category/601786.aspx

分享到:
评论

相关推荐

    JAVA常见异常整理.docx

    常见的Exception包括: - `ArithmeticException`:当发生算术运算异常时抛出,例如除以零。 - `NullPointerException`:当试图访问或操作一个null引用的对象时抛出。 - `ClassCastException`:在进行强制类型转换...

    Java常见异常收纳整合

    为了更好地理解和处理这些异常,本文将对部分Java开发中常见的异常进行详细的整理和归纳,帮助开发者掌握异常处理的基本技巧。 ### 1. 算术异常类:`ArithmeticException` 当执行算术运算时出现错误(如除以零)时...

    AIX常见问题整理.。。。。。

    【AIX常见问题整理】 AIX,全称Advanced Interactive eXecutive,是IBM开发的一种UNIX操作系统,广泛应用于IBM Power Systems服务器。以下是一系列AIX系统管理、故障排查和优化的相关知识点: 1. **Firmware升级**...

    打印机的一般常见故障整理集.doc

    本文主要针对喷墨打印机、激光打印机和针式打印机的常见故障进行整理,旨在帮助用户自我诊断和解决问题。 1. 打印机电源故障:首先检查打印机是否正常接通电源,电源指示灯是否亮起。如果电源线连接不可靠或电源...

    纯真IP整理器直接提取IP数据库关键字为纯真数据

    该描述中提到的"qqwry.dat"是一个常见的纯真IP数据库文件格式,它存储了大量IP地址及其对应的城市、国家等地理信息。这个文件通常是二进制格式,通过特定的解析方式才能读取和使用其中的数据。纯真IP整理器的作用...

    jsp考试面试常见考点整理

    ### JSP考试面试常见考点详解 #### 一、Servlet与CGI的区别 Servlet与CGI(Common Gateway Interface)作为两种不同的Web应用程序技术,在处理客户端请求的方式上有显著差异。 **Servlet**: - **基于Java**:...

    测试工程师面试常见问题整理分享.pdf

    设计时需考虑各种输入条件、边界情况、异常处理和预期结果,确保测试用例能够覆盖所有可能的执行路径。 5. 不同测试类型的比较 黑盒测试不考虑内部结构,关注功能实现;白盒测试深入代码层面;单元测试针对单一功能...

    测试工程师面试常见问题整理.doc

    以下是一些在面试中常见的测试工程师相关问题及其详细解答: 1. 为什么要在一个团队中开展软件测试工作? 软件测试是为了确保产品的功能正确性、性能、兼容性、安全性等满足用户需求,发现并修复潜在的问题,防止...

    超级批量编码转换 1.0

    文件编码是计算机存储和显示字符的方式,常见的有ASCII、Unicode(包括UTF-8、UTF-16等)以及GBK等。ASCII是最基础的编码,只包含128个英文字符;GBK是中国大陆广泛使用的编码,包含了大部分中文字符;而Unicode则是...

    知乎数据清洗整理和结论研究.zip

    首先,从“知乎数据_201701.csv”这个文件名我们可以推断,这是2017年1月份知乎平台的部分数据记录,存储为CSV格式,这是一种常见的结构化数据文件格式,便于数据分析。CSV文件通常包含列标题和行数据,每一行代表一...

    常见c++笔试题整理(含答案)

    本篇文章将根据提供的标题"常见C++笔试题整理(含答案)"及描述"很好的C++笔试,对找工作的孩纸们面试很有帮助的。"来深入探讨C++笔试中常见的知识点。 1. **基础语法**:C++的基础包括变量、数据类型、运算符、...

    服务异常问题整理与方案说明v1.0.docx

    文档"服务异常问题整理与方案说明v1.0.docx"中详细列举了生产环境中常见的服务器异常问题及其解决方案,主要涉及服务优化和运维管理。以下是对这些问题的深入解析: 1. **EC2实例buff/cache过高**:当服务器的buff/...

    对VC++一些常见问题的整理.doc

    ### VC++常见问题详解 #### 1. 类在工作区间突然消失 问题描述:在VC++开发环境中,可能遇到某类在工作区界面突然不可见的情况。 解决方案:此类情况通常是由于类被隐藏导致的。解决办法是打开FILEVIEW,找到隐藏...

    Python经典例题整理 Python常见练习题目整理 共16页.pdf

    12. **异常处理**:虽然例子中没有显示,但在实际编程中,处理用户输入和数据验证时会经常用到异常处理,例如防止非数字输入。 通过这些练习,学习者可以掌握Python的基本语法,数据类型,控制流,函数调用,以及...

    电子商务信息的收集和整理.docx

    常见的电子商务数据分析方法包括趋势分析、细分分析、关联分析、异常检测和 A/B 测试等。 四、结论 在电子商务时代,信息的收集、整理和分析对于企业决策和运营至关重要。通过有效收集和整理电子商务信息,企业...

    java常见面试题汇总整理2023

    2. **异常处理**:了解异常分类,如何正确使用try-catch-finally语句块,以及finally块的重要性。 3. **面向对象**:深入理解类、对象、继承、封装、多态的概念及其应用。 4. **集合框架**:掌握ArrayList、...

    音频转换MP3格式工具

    音频转换MP3格式工具是一款专为用户设计的实用软件,主要功能是将各种不同类型的音频文件转换成...无论你是想整理个人音乐库,还是为了方便在不同设备上播放,这款工具都能帮助你轻松完成任务,享受高品质的音乐体验。

    Jms基础知识整理(转)

    **JMS基础知识整理** JMS(Java Message Service)是Java平台中用于企业级应用间进行异步消息传递的一种标准API。它提供了一种统一的消息接口,使得开发人员可以在不同的消息中间件之间进行选择,而无需关心底层...

    数据的收集与整理.ppt

    数据收集可以通过多种方式实现,常见的有问卷调查、观察法、实验法、访谈法等。在这个案例中,使用的是问卷调查,通过勾选的方式收集信息。这种收集方法简单、快捷且易于量化,适合大规模的数据收集。 在整理数据时...

Global site tag (gtag.js) - Google Analytics