分享
 
 
 

一些错误地解决方法

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1.如果使用Ant和Junit是被报找不到test,检查一下是否误用了private

出错信息:

<failure message="No tests found in test.AllTest" type="junit.framework.AssertionFailedError">junit.framework.AssertionFailedError: No tests found in test.AllTest

该错误有个很特别的特点,当你不通过ant来运行测试,而是通过AllTest类来运行的话,可以正常运行。小心哦

2.如果遇到报:表名无效,且jvm报严重错误,看看是不是用了数据库的保留关键字来做表名了,如User。

3.使用ant时必须小心ant的classpath它用的不是IDE的classpath,小心!

4.小心下边的异常,

exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of xp.bean.Users.?" type="net.sf.hibernate.PropertyAccessException">java.lang.ClassCastException at xp.bean.UsersMetaClass1.setPropertyValues(<generated>) at net.sf.hibernate.persister.AbstractEntityPersister.setPropertyValues

上次出现该错错误的原因是:

源文件里我的class类型为一个类Contact contact

而跑到mapping里却成了Set,呵呵厉害。

5.突然间冒出大量的NullPointException

重新build一下看看先。

6.="Flush during cascade is dangerous - this might occur if an object was deleted and then re-saved by cascade"

7.Tapestry的出错信息:

Class com.bookshop.Hello does not implement the IPage interface.

location: context:/WEB-INF/Home.page, line 6

原因:与显示有关的哪个java类没有从IPage家族继承。

8.使用ant时给出的路径好象不允许出现空格。

9.由于使用ant时用junit做测试的话,classpath中出现j2ee.jar的话,问题多多。例如xml格式的log文件生成不了,莫名其妙的NullPointException等。所以我设置了两个包个包含j2ee.jar,为编译用;一个没有,为junit用

10.进行单元测试时,在查询返回后应马上assertNotNull(),这样可以更快速的定位NullPointException

11.要使用ResourceBundle的话,要千万小心。必须用日志记录下它的状态。还有该属性文件应该放在classes下面。

12.当要显示任何页面时,都被提示无效,那么应该检查一下lib目录了,还有一些很奇怪的异常,例如你明明可以找到一个类但是服务器却提示ClassNotDefException,那么估计是缺少了该类所必须的包了。或者多了不兼容的包,如, xdoclet系列包不被struts的lib目录所兼容

13.编写clone时从Java编程思想(2nd)上学到的(732):

.引数传递过程中会自动产生别名(alias)。

.没有局域对象(local objects),只有局域性的(local)references。

.reference受范围(scope)的限制,对象则否。

.对象的寿命从来不是Java的讨论议题(因为有垃圾回收机制)

14.try catch finally的域居然是分离的。

15.jsp乱码的其中一个原因:charset="gb2312" 等号"="的两边不允许有空格。

16.我的基于Displaytag的简单报表解决方案。

http://displaytag.sourceforge.net/

下载displaytag.jar和displaytag.tld

displaytag.jar放在lib目录,而displaytag.tld放在WEB-INF目录,在web.xml中为displaytag.tld声明一下。

<taglib>

<taglib-uri>http://displaytag.org</taglib-uri>

<taglib-location>/WEB-INF/displaytag.tld</taglib-location>

</taglib>

在jsp里使用前,加上

<%@ taglib uri="http://displaytag.org" prefix="display" %>

注意该软件有个bug,他要用的一个包common-lang.jar版本必须在2.0以上。

如果碰到下面异常,则应坚持一下是否该包的版本问题。

java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.capitalize(Ljava/lang/String;)Ljava/lang/String;

然后就可放心使用了

<display:column property = "xxx"/>其中xxx为对象中的带有getter的变量>。

定义表格的样子,用css定义。如

TABLE.its THEAD TR {

BACKGROUND-COLOR: #69c

}

TABLE.its TR.even {

BACKGROUND-COLOR: #def

}

在使用分页时,可能会出现这种情况,点击其他页时,弹出下载窗口,让你下载当前jsp页面,这是因为你在当前页面读取了数据的缘故。解决办法为在action里读取数据而不是在jsp里。可以参考

http://www.displaytag.org/example-paging.jsp?d-26189-p=2

17.使用displaytag时,在一列中放入多个元素

必须在display:table中定义一个id

<display:table name = "allBooks" class = "its" pagesize = "5" id = "item">

<display:column title = "操作">

<a href = "/Bookshop/admin/bookManagement.do?action=view&id=<%=((Book)item).getId()%>" target = "_blank" >查看</a>

<a href = "/Bookshop/admin/bookManagement.do?action=edit&id=<%=((Book)item).getId()%>">编辑</a>

<a href = "/Bookshop/admin/bookManagement.do?action=delete&id=<%=((Book)item).getId()%>">删除</a>

</display:column>

要在displaytag中使用链接,必须具备paramId,否则不显示为链接

<display:column property = "product.name" href = "viewDetailV2.0.jsp" title = "书名" paramId="item" paramProperty="product.id"/>

可以这样使用display

<display:column property = "product.id" title = "ID"/>

其中product为对象

18.<bean:write name = "xxxx" property = "xxx"/> 可以直接取到session.getAttribute()取到的东西。

19.实验struts-upload例子时要注意的地方:

1.If you would rather write this file to another file, please check here:

这一行要打钩

2.If you checked the box to write to a file, please specify the file path here:

在这里要重命名如:c:\b.jpg

上传成功的话,会出现提示 The file has been written to "c:\b.jpg"

20.Hibernate的like可以这么用:

Query query = session.createQuery("from src.persistent.Book as book where upper(book.name) like :name ");

query.setString("name", "%");

result = query.list();

21.Hibernate出现 duplicate import : className

异常也可能是因为忘了为持久类在configuration中addClass了

22.<logic:iterate id = "author" name = "authors">

name所引用的是session里的attribute。

23.如果发现要出现询问下载的情况,有可能是因为要跳转的页面出现了问题。试试在要跳转到的页删掉

<%@ page contentType="text/html; charset=gb2312"%>

24.如果JSP页面跳转时出现下边的错误信息:

The request sent by the client was syntactically incorrect (Invalid path /web/shoppingCart was requested).

原因是struts-config的action = "x" 写成了 action = "x.do"

25.在struts中,strut-config.xml中,forward时使用redirect = "true"可以将.do重定向为.jsp

26.以后在判断相等性之前先用logger把两个值显示出来。

27.从session里getAttribute后,修改并不需要重新setAttribute一次。

28.在hibernate中使用subclass是一棵继承树共用一个表,仅生成个mapping。

每个类中必须有discrimator-value。在最上层的类中必须声明:

@hibernate.discriminator column = "class"。

不可以将子类添加到configuration里去。(即不可addClass(子类))

使用Xdoclet的建立subclass的例子(该类是父类)

/**

* @hibernate.class discriminator-value = "customer"

* @hibernate.discriminator column = "class"

*/

而使用joined-subclass则是一类一表,也不许将子类添加进configuration里去。

/**

* @hibernate.joined-subclass

* @hibernate.joined-subclass-key

* column="customer_id"

*/

如果发现生成的mapping文件中joined-subclass的key column为空,那么可能是@hibernate.joined-subclass-key这句没有写对。

用joined-subclass生成的表,仔细看。Member extends Customer

create table Customer (

id VARCHAR2(255) not null,

name VARCHAR2(255),

description VARCHAR2(255),

primary key (id)

)

create table Member (

customer_id VARCHAR2(255) not null,

password VARCHAR2(255),

primary key (customer_id)

)

29.在junit中尽量使用assertEquals代替assertTrue;

30.Hibernate

如果Child extends Parent

那么from Parent as parent 也将会将Child选出来,而from Child as child 则不会选出Parent

31.Hibernate

使用hibernate的one-to-one时,应该两方向都set,否则会报save NullPointException

parent.setChild(child);

child.setParent(parent);

32.Hibernate

遇到下边的异常,估计是与因为外键出现了问题:

java.lang.NullPointerException

at net.sf.hibernate.persister.AbstractEntityPersister.getPropertyValue(AbstractEntityPersister.java:675)

at net.sf.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:33)

如:

* @hibernate.id generator-class = "foreign"

* @hibernate.generator-param name = "property" value = "customer"

* @hibernate.one-to-one name = "custmoer" class = "src.persistent.Customer"

value的值和one-to-one 中name的值不符,则会出现上边的异常。如果不显示指定name则默认取成员变量名

Customer a

则name = "a" 需要小心的是不是类名。所以,以后最好显示指定名字为好。

33.出现异常:

Exceptionobject references an unsaved transient instance - save the transient instance before flushing: src.persistent.Product

原因没有为某对象进行set设置, 如上边的这个就是某对象没有调用setProduct

34.

"xxx action = "/a" 不用.do和根目录名

<a href = "b.do" 需要.do和根目录名

35.

Caused by: java.sql.SQLException: ORA-02291: 违反完整约束条件 (BOOKSHOP.FK4AAEE

47687CCA6B) - 未找到父项关键字

如果你觉得该做的e是出现这个问题,那么检查一下,是否将类的继承关系在hibernate的mapping中反映了出来。joined-subclass或subclass

例如a extends b

如果持久类c 需要Set的是持久类a,那么你把b传入,而b又没有在mapping中将父子关系反映出来的话,就会出现该异常

36.使用DynaActionForm需要注意的问题

在struts-config声明

<form-bean name="memberloginForm" dynamic ="true" type="org.apache.struts.action.DynaActionForm">

<form-property name = "name" type = "java.lang.String"/>

<form-property name = "password" type = "java.lang.String"/>

</form-bean>

在Action里将form强制转化成DynaActionForm,然后get("属性名")就可以了

37.那位大侠能给出一个用hibernate进行分页得实际例子,学习中!

http://forum.hibernate.org.cn/viewtopic.php?t=1772

Query q = s.find(".....");

q.setFirstResult(10); // 从第11条记录开始

q.setMaxResults(100); // 取出100条

......

38.struts的validate最简单实现

1.首先准备好错误提示信息。

xxx.properties 里

errors.required={0} is required.(默认已有)

2.Form必须从ValidatorForm继承

3.不可以重载ValidatorForm的validate函数

4.在validate.xml中为你想验证的表单进行验证设计。例如

<form name="logonForm">

<field property="userName" depends="required">

<arg0 key="prompt.userName"/>

(该参数将在显示错误信息是从xxx.properties读取prompt.userName,填入{}方括号里,取代0。如果是arg1将将填入{1}位置,以此类推。

</field>

</form>

不需要在action里做任何处理。只管forward就行了。作为forward的目标页,不需要任何有关用于处理出错信息的处理。

39.服务器报

The requested resource (/xxxx/xxx.htm) is not available.的很奇怪的一个的可能原因

在web.xml中定义的tld,没有找到

或者是lib目录下的包太多出现了问题。

<taglib>

<taglib-uri>/spring</taglib-uri>

<taglib-location>/WEB-INF/spring.tld</taglib-location>

</taglib>

如WEB-INF目录下不存在spring.tld的话,就会报上边的错误

40.

spring的xxx-servlet.xml的使用SimpleFormController系列的类问题:

<bean id = "priceIncreaseForm" class="PriceIncreaseFormController">

<property name="sessionForm"><value>true</value></property>

<property name="beanName"><value>priceIncrease</value></property>

<property name="commandClass"><value>PriceIncrease</value></property>

<property name="formView"><value>priceIncrease</value></property>

<property name="successView"><value>hello</value></property>

<property name="productManager">

<ref bean="prodMan"/>

</property>

</bean>

这里要注意几个问题:

(1)上边的PriceIncrease是了类名,必须在classes里存在该类,否则报:

PropertyVetoExceptionsException: 1 errors:-- ErrorCodedPropertyVetoException: message=[Failed to convert property value of type [java.lang.String] to required type [java.lang.Class] for property named 'commandClass'; nested exception is:

java.lang.IllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease]; errorCode=[typeMismatch]

java.lang.IllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease

(2)<property name="formView"><value>priceIncrease</value></property>

这一行必不可少,priceIncrease是页面的名字,他将会是prefix + priceIncrease + suffix

如果缺少该行,则报:

javax.servlet.ServletException: Error in ModelAndView object or View resolution encountered by servlet with name 'pocketSpring': View to render cannot be null with ModelAndView [ModelAndView: materialized View is [null]; Model=[{priceIncrease=PriceIncrease@148e798, org.springframework.validation.BindException.priceIncrease=org.springframework.validation.BindException: BindException: 0 errors}]]

使用Errors的rejectValue相关问题:

rejectValue(java.lang.String field, java.lang.String errorCode, java.lang.Object[] errorArgs, java.lang.String defaultMessage)

Reject the given field of the current object, using the given error description.

当前对象指的是xxx-servlet.xml中与validator类有联系的哪个对象。

第一个是:当前对象的属性名,必须存在

第二个是:将要从属性文件中读取的消息

第三个是:传递给所读取的消息的参数,如:

error.too-low=You have to specify a percentage higher than {0}!

第四个是:当从属性文件中读取消息不成功时,所reject的值

以后从request中读取parameter可以借用spring的RequestUtils包里的

getStringParameter

public static java.lang.String getStringParameter(javax.servlet.http.HttpServletRequest request,

&bsp; java.lang.String name,

java.lang.String defaultVal)

Get a string parameter, with a fallback value. Never throws an exception. Can pass a distinguished value to default to enable checks of whether it was supplied.

不会抛异常

Hibernate的问题:2.1rc的问题

INFO: cache provider: net.sf.ehcache.hibernate.Provider

net.sf.hibernate.HibernateException: could not instantiate CacheProvider:

解决办法,2.1rc比以前的版本多需要一个包

ehcache.jar

43.static的问题

static函数只可以访问static成员变量。

而static变量可以被任何成员函数访问。

44.

java.lang.NoClassDefFoundError: javax/transaction/Synchronization];

需要添加JTA.jar

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有