电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

一些错误地解决方法


发布日期:2021/1/27
 

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

出错信息

<failure message=No tests found in testAllTest type=junitframeworkAssertionFailedError>junitframeworkAssertionFailedError: No tests found in testAllTest

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

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

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

小心下边的异常

exception setting property value with CGLIB (set hibernatecglibuse_reflection_optimizer=false for more info) setter of xpbeanUsers? type=netsfhibernatePropertyAccessException>javalangClassCastException at xpbeanUsersMetaClasssetPropertyValues(<generated>) at netsfhibernatepersisterAbstractEntityPersistersetPropertyValues

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

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

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

突然间冒出大量的NullPointException

重新build一下看看先

=Flush during cascade is dangerous this might occur if an object was deleted and then resaved by cascade

Tapestry的出错信息

Class combookshopHello does not implement the IPage interface

location: context:/WEBINF/Homepage line

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

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

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

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

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

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

编写clone时从Java编程思想(nd)上学到的()

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

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

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

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

try catch finally的域居然是分离的

jsp乱码的其中一个原因charset=gb 等号=的两边不允许有空格

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

下载displaytagjar和displaytagtld

displaytagjar放在lib目录而displaytagtld放在WEBINF目录在webxml中为displaytagtld声明一下

<taglib>

<tagliburi>;/tagliburi>

<tagliblocation>/WEBINF/displaytagtld</tagliblocation>

</taglib>

在jsp里使用前加上

<%@ taglib uri= prefix=display %>

注意该软件有个bug他要用的一个包commonlangjar版本必须在以上

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

javalangNoSuchMethodError: monslangStringUtilscapitalize(Ljava/lang/String;)Ljava/lang/String;

然后就可放心使用了

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

定义表格的样子用css定义

s THEAD TR {

BACKGROUNDCOLOR: #c

}

s TReven {

BACKGROUNDCOLOR: #def

}

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

?dp=

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

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

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

<display:column title = 操作>

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

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

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

</display:column>

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

<display:column property = productname href = viewDetailVjsp title = 书名 paramId=item paramProperty=productid/>

可以这样使用display

<display:column property = productid title = ID/>

其中product为对象

<bean:write name = xxxx property = xxx/> 可以直接取到sessiongetAttribute()取到的东西

实验strutsupload例子时要注意的地方

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

这一行要打钩

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

在这里要重命名如c:\bjpg

上传成功的话会出现提示 The file has been written to c:\bjpg

Hibernate的like可以这么用

Query query = sessioncreateQuery(from srcpersistentBook as book where upper(bookname) like :name );

querysetString(name %);

result = querylist();

Hibernate出现 duplicate import : className

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

<logic:iterate id = author name = authors>

name所引用的是session里的attribute

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

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

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

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

原因是strutsconfig的action = x 写成了 action = xdo

在struts中strutconfigxml中forward时使用redirect = true可以将do重定向为jsp

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

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

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

每个类中必须有discrimatorvalue在最上层的类中必须声明

@hibernatediscriminator column = class

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

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

/**

* @hibernateclass discriminatorvalue = customer

* @hibernatediscriminator column = class

*/

而使用joinedsubclass则是一类一表也不许将子类添加进configuration里去

/**

* @hibernatejoinedsubclass

* @hibernatejoinedsubclasskey

* column=customer_id

*/

如果发现生成的mapping文件中joinedsubclass的key column为空那么可能是@hibernatejoinedsubclasskey这句没有写对

用joinedsubclass生成的表仔细看Member extends Customer

create table Customer (

id VARCHAR() not null

name VARCHAR()

description VARCHAR()

primary key (id)

)

create table Member (

customer_id VARCHAR() not null

password VARCHAR()

primary key (customer_id)

)

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

Hibernate

如果Child extends Parent

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

Hibernate

使用hibernate的onetoone时应该两方向都set否则会报save NullPointException

parentsetChild(child);

childsetParent(parent);

Hibernate

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

javalangNullPointerException

at netsfhibernatepersisterAbstractEntityPersistergetPropertyValue(AbstractEntityPersisterjava:)

at netsfhibernateidForeignGeneratorgenerate(ForeignGeneratorjava:)

如:

* @hibernateid generatorclass = foreign

* @hibernategeneratorparam name = property value = customer

* @hibernateonetoone name = custmoer class = srcpersistentCustomer

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

Customer a

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

出现异常

Exceptionobject references an unsaved transient instance save the transient instance before flushing: srcpersistentProduct

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

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

<a href = bdo 需要do和根目录名

Caused by: javasqlSQLException: ORA: 违反完整约束条件 (BOOKSHOPFKAAEE

CCAB) 未找到父项关键字

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

例如a extends b

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

使用DynaActionForm需要注意的问题

在strutsconfig声明

<formbean name=memberloginForm dynamic =true type=orgapachestrutsactionDynaActionForm>

<formproperty name = name type = javalangString/>

<formproperty name = password type = javalangString/>

</formbean>

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

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

?t=

Query q = sfind();

qsetFirstResult(); // 从第条记录开始

qsetMaxResults(); // 取出

struts的validate最简单实现

首先准备好错误提示信息

xxxproperties 里

errorsrequired={} is required(默认已有)

Form必须从ValidatorForm继承

不可以重载ValidatorForm的validate函数

在validatexml中为你想验证的表单进行验证设计例如

<form name=logonForm>

<field property=userName depends=required>

<arg key=promptuserName/>

(该参数将在显示错误信息是从xxxproperties读取promptuserName填入{}方括号里取代如果是arg将将填入{}位置以此类推

</field>

</form>

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

服务器报

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

在webxml中定义的tld没有找到

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

<taglib>

<tagliburi>/spring</tagliburi>

<tagliblocation>/WEBINF/springtld</tagliblocation>

</taglib>

如WEBINF目录下不存在springtld的话就会报上边的错误

spring的xxxservletxml的使用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>

这里要注意几个问题

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

PropertyVetoExceptionsException: errors: ErrorCodedPropertyVetoException: message=[Failed to convert property value of type [javalangString] to required type [javalangClass] for property named commandClass; nested exception is:

javalangIllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease]; errorCode=[typeMismatch]

javalangIllegalArgumentException: Invalid class name [PriceIncrease]: PriceIncrease

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

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

如果缺少该行则报

javaxservletServletException: 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@e orgspringframeworkvalidationBindExceptionpriceIncrease=orgspringframeworkvalidationBindException: BindException: errors}]]

使用Errors的rejectValue相关问题

rejectValue(javalangString field javalangString errorCode javalangObject[] errorArgs javalangString defaultMessage)

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

当前对象指的是xxxservletxml中与validator类有联系的哪个对象

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

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

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

errortoolow=You have to specify a percentage higher than {}!

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

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

getStringParameter

public static javalangString getStringParameter(javaxservlethttpHttpServletRequest request

&bsp; javalangString name

javalangString 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的问题rc的问题

INFO: cache provider: netsfehcachehibernateProvider

netsfhibernateHibernateException: could not instantiate CacheProvider:

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

ehcachejar

static的问题

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

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

javalangNoClassDefFoundError: javax/transaction/Synchronization];

需要添加JTAjar

上一篇:对等(P2P)计算实际使用之发展历史回顾

下一篇:类的集合--包