您的当前位置:首页正文

Java常见问题及处理

2024-06-11 来源:爱go旅游网
常见的JAVA错误以及处理方法

2007-12-10 15:43

该错误集合中有些是我自己总结的放在一起来了0、需要标识符a) 不在函数内1、非法表达式开始b) 可能:丢失括号 . 2. no data found a) 可能:setInt(1,100)3. 找不到符号a) 可能:没导入包4. 指定了无效URL

a) 可能:数据库名或IP错误,即连接出错5. 类路径没有找到

a) 可能: ClassNotFoundException: oracle.jdbc.driver.OracleDriver b) 原因: 一般是指包名写错6. 空指针异常a) 可能: 数据源错误7. 不能执行查询

a) 可能: 数据库中表的问题8. invalid identity a) 可能: 列名出错9. 若在数据库中创建了10. 表名或列名不存在

a) 可能:表不存在或者没有插入数据到表中11. 不支持的类,类的版本错误

a) 可能:没有导入jdk5.0,或者编译器仍为12. MappingNotFoundException

a) Maybe: In the Eclipse Not refersh , or not exist in the dirctory 13. HibernateException: /hibernate.cfg.xml not found a) Maybe1: hibernate.cfg.xml not in the root directory b) Maybe2: Could not parse configuration .

c) resolve: database not connect or use another database 14. ConstraintViolationException a) Maybe: used a not true database 15. 驱动没有找到类错误

16. 空指针异常

, java.lang.NullPointerException 或者 JDBC Driver not found

jar包不存在或者版本不一致,

比如将旧的版本换成新的会造成该

可能:连接数据库的驱动

1.4

两个sequence ,运行时出现异常可能是先后执行了多次

select

句,导致与原有的序列号产生冲突

,比如列名不存在比如数据库名或

IP错误

,或者没有import包,或者没有在类路径中找到

中把ojdbc14.jar

jar文件加进来

c) 解决: 没有加载Oracle驱动jar,在.bash_profile

中,没有100这个值

,有些是从网络上搜索到的别人的一些错误处理集合

,都

a) 可能1:数据库连接出错,比如在17. 数据插入异常

hibernate.cfg.xml中的数据错误会导致异常。

,GenericJDBCException: could not insert

commit

a) 可能1:没有建立表或者表中没有任何数据b) 可能2:插入数据后没有执行提交语句:18. LazyInitializationException a) 可能1:没有在查询语句中加19. IdentifierGenerationException a) 可能1:高位表没有初始化(比如

hi_value

中没有记录)

20. could not initialize a collection: [hibernate.entity.Role.modules#32768] Syntax error: Encountered \"-\" at line 1, column 132. a) 错误原因:module_role

inverse=”true”

lazy=\"false\">

红色字部分中“-”

fetch

或者延迟加载异常

21. could not insert collection rows: [hibernate.entity.Module.roles#1] 在Module.hbm.xml文件的如下配置中加入

22.在部署Struts

时,出现如下错误信息:

HTTP Status 404 - Servlet action is not available type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available. 问题原因:

1.、web.xml文件中未配置2、struts-config.xml4、非以上三种情况。

针对以上4种情况相应的解决方案如下:1、在web.xml文件中加上ActionServlet?????? /WEB-INF/struts-config.xml? ?2、在struts-config.xml

文件检查你要访问的

Action配置文件。

struts-config.xml

文件中

3、检查jsp文件form标记中action属性的路径名称是否与action标记的path属性的路径名称一致。4、非以上情况的解决办法就是检查录下的localhost_log

web容器的log日志,如果时

tomcat则检查下logs目

文件,看里边是否记录有错误信息,

然后根据错误信息提示将其纠正。

的配置信息

ActionServlet

Action。

文件未配置你要访问的

3、你的jsp文件form标记中action属性的路径名称错误。

23.java.lang.NoClassDefFoundError: org/apache/commons/beanutils/Converter 缺少spring-framework-2.0.3\\lib\\jakarta-commons\\commons-beanutils.jar 24.

ava 代码Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type 缺少spring-framework-2.0.3\\lib\\asm\\asm-2.2.2.jar区别

包,版本不同,该包的名字有相应的

java 代码Caused by: java.lang.NoClassDefFoundError: org/dom4j/DocumentException

缺少spring-framework-2.0.3\\lib\\dom4j\\dom4j-1.6.1.jar应的区别

把这个包进去就可以了:

\\Spring206\\lib\\dom4j

、dom4j-1.6.1.jar

包,版本不同,该包的名字有相

java 代码Caused by: java.lang.NoClassDefFoundError: org/apache/commons/collections/SequencedHashMap

缺少spring-framework-2.0.3\\lib\\jakarta-commons\\commons-collections.jar不同,该包的名字有相应的区别

java 代码Caused by: java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter

缺少spring-framework-2.0.3\\lib\\cglib\\cglib-nodep-2.1_3.jar字有相应的区别

java 代码Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor 缺少hibernate-3.2\\lib\\asm.jarjava 代码

org.hibernate.exception.SQLGrammarException: could not load an entity: [www.proudsoul.xml.User#1]

JAVA工程与WEB工程包的区别:一个是asm.jar,一个是jta.jar java 代码Caused by: java.lang.NoClassDefFoundError: javax/transaction/TransactionManager 缺少spring-framework-2.0.3\\lib\\j2ee\\jta.jar此种错误请检查相应的25,

Exception in thread \"main\"

org.springframework.dao.InvalidDataAccessResourceUsageException: could not get next sequence value; nested exception is

org.hibernate.exception.SQLGrammarException: could not get next sequence value Caused by: org.hibernate.exception.SQLGrammarException: could not get next sequence value 原因:没有加26,

我的配置文件

然后我运行保存一条数据进去

Sequence或者数据库的方言写错了

***.hbm.xml

配置文件的配置

包,版本不同,该包的名字有相应的区别

包,版本不同,该包的名字有相应的区别

包,版本不同,该包的名

包,版本

The database returned no natively generated identity value 就会报这个错误

因为你native是根据看底层数据库的能力选择而我建表的时候

id没有指定

identity, sequence

或者hilo中的一个

alter table `student` change `id` `id` int auto_increment 我们把我们的表的结构小小的改动一下就没问题了27,

UpdateManager无法启动2007-08-09 15:21序,会出现如下状况:1.apt-get 以上可能是deb损坏之类造成的sudo dpkg -r sqldveloper 正在读取软件包列表

...

完成

...

完成

中把对应的段删掉OK了...

需要重新安装,但是我无法找到相应的安装文件。

正在分析软件包的依赖关系树E: 软件包 sqldeveloper 重要:修改之前请先备份

在status中找到你对应的包删除就28,

Exception in thread \"main\" java.lang.NoClassDefFoundError: antlr/ANTLRException 少了antlr-2.7.5H3.jarata\\3.0\\lib 29, Caused by:

java.lang.NoClassDefFoundError: javax/transaction/Synchronization 缺少Spring206\\lib\\j2ee\\jta.jar 30, Caused by:

java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy3] to required type [business.impl.PriceBiz] or conversion strategy found 在java类中设置priceBiz18, 数组越界

可能1: 在命令行后面需要加入参数可能2:加入的参数错误19, car is not mapped 可能1: 在cfg.xml20, 属性没有找到可能1: hbm.xml

文件中的

有问题, 也许是name的值与对应类中的

中没有增加映射的

hbm.xml文件在

.

时应该设置的是接口

PriceBizIf

,而非实现类

for property 'priceBiz':

no matching editors

包,从

D:\\eclipse\\eclipse\\plugins\\com.genuitec.org.hibernate.eclipse_4.1.1\\myeclipse-d无法启动3.新立得软件包管理程序无法启动

如果在应用程序安装过程中,暴力中断安装程

remove 和dpkg --remove 无法删除软件 2.UpdateManager

解决方法:1.从 /var/lib/dpkg/status

成员名不一致21,SQLException: 的方法添加到

无当前连接

中去,比如这个没有加入

可能1:在比如创建帐户时没有对相应

:newAccount

class=\"org.springframework.aop.support.NameMatchMethodPointcutAdvisor\">

transfer

22,SQLException: Syntax error: Encountered \"table\" at line 1, column 8. 可能1;执行SQL时出现冲突,可能是SQL语句中使用了关键字作为变量来用

update order set balance=1000000; 其中order被用作表名来使用

,这是错误的,因为order是个关键字,用在order by

,比如

23, Servlet /Spring-WebMvc threw load() exception

org.xml.sax.SAXParseException: Document root element \"beans\root \"null\".

jar包的冲突,spring-1.2.6.jar

和spring.jar

出现在一个war的目录

中:JBoss/server/all/deploy/Spring-WebMvc.war/WEB-INF/lib 24, java.sql.SQLException:

当事务仍处于活动状态时,无法关闭连接。

25 ,

validateJarFile(/home/soft01/Tomcat/webapps/sms-token-struts/WEB-INF/lib/servlet-api.jar)

Servlet /sms-struts-tiles threw load() exception

java.lang.ClassNotFoundException: org.apache.struts.action.ActionServlet 原因:在WEB-INF/lib/ servlet-api.jar

目录下有servlet-api.jar

与/Tomcat/common/lib

目录下的

冲突了,把WEB-INF/lib/

下的servlet-api.jar

删除就可以了

26,java.lang.ClassNotFoundException:

org.springframework.web.struts.ContextLoaderPlugIn Marking servlet action as unavailable

10:30:47,088 ERROR [/NetCT_OSS]:3953 - Servlet /NetCT_OSS threw load() exception javax.servlet.UnavailableException

27,org.xml.sax.SAXParseException: Document root element \"beans\DOCTYPE root \"null\". 缺少

MyEclipse/eclipse/plugins/com.genuitec.eclipse.springframework_5.5.0/data/2.0/dist/modules/spring-struts.jar

28,Caused by: java.sql.BatchUpdateException: ORA-02291: integrity constraint (SD0702.FK82D343CF49A4B831) violated - parent key not found

Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

有可能是ID生成策略的问题,我将它XML映射文件改成就好了29,

2007-08-19 16:21:43,290 ERROR

[org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/OSS].[action]] - Servlet.service() for servlet action threw exception

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [entity.Module#2] java.util.ConcurrentModificationException 原因:已经有对象拥有了所选择的30,

ERROR [org.apache.catalina.session.ManagerBase] - IOException while loading persisted sessions: java.io.InvalidClassException: entity.Module; local class incompatible: stream classdesc serialVersionUID = -5988350031935445758, local class serialVersionUID = -297934247726484429

java.io.InvalidClassException: entity.Module; local class incompatible: stream classdesc serialVersionUID -297934247726484429 在Module中加上一个关键字31,

Caused by: java.sql.BatchUpdateException: ORA-02292: integrity constraint (SD0702.SYS_C00132664) violated - child record found 原因:有其他的表引用了该表的外建32,

出现数组越界的时候

,看看是不是循环时没有加

可以改成

=,比如:

for(int i = 1; i1.如果使用Ant和Junit是被报找不到出错信息:

type=\"junit.framework.AssertionFailedError\">junit.framework.AssertionFailedError: No tests found in test.AllTest

test,检查一下是否误用了

private

,所以报这个异常,如果没有引用就不会出现

:transient

= -5988350031935445758, local class serialVersionUID

=

module,用clear(),

而不是remove();

该错误有个很特别的特点,当你不通过可以正常运行。小心哦

ant来运行测试,而是通过AllTest类来运行的话,

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

3.使用ant时必须小心ant的classpath4.小心下边的异常,

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() at net.sf.hibernate.persister.AbstractEntityPersister.setPropertyValues 上次出现该错错误的原因是源文件里我的

:

Contact contact

class类型为一个类

它用的不是IDE的classpath,小心!

而跑到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包个包含j2ee.jar

做测试的话,classpath

,为junit

中出现j2ee.jar用

,这样可以更快速的定位

的话,问题多多。例等。所以我设置了两个

如xml格式的log文件生成不了,莫名其妙的

,为编译用;一个没有

NullPointException

10.进行单元测试时,在查询返回后应马上NullPointException

assertNotNull()

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

12.当要显示任何页面时,都被提示无效,那么应该检查一下的异常,例如你明明可以找到一个类但是服务器却提示

还有该属性文

lib目录了,还有一些很奇怪ClassNotDefException

,那么估计

是缺少了该类所必须的包了。或者多了不兼容的包,如目录所兼容

, xdoclet系列包不被struts的lib

13.编写clone时从Java编程思想(2nd)上学到的(732):.引数传递过程中会自动产生别名.没有局域对象(local objects).reference

.对象的寿命从来不是14.try catch finally

(alias)

,只有局域性的(local)references

)

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

Java的讨论议题(因为有垃圾回收机制的域居然是分离的。

charset=\"gb2312\"

等号\"=\"的两边不允许有空格。

15.jsp乱码的其中一个原因:16.我的基于Displaytag下载displaytag.jardisplaytag.jardisplaytag.tld

的简单报表解决方案。

http://displaytag.sourceforge.net/

和displaytag.tld

目录,而displaytag.tld

放在WEB-INF目录,在web.xml中为

放在lib

声明一下。

http://displaytag.org

/WEB-INF/displaytag.tld

在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;

然后就可放心使用了

定义表格的样子,用

css定义。如

TABLE.its THEAD TR { BACKGROUND-COLOR: #69c }

TABLE.its TR.even {

BACKGROUND-COLOR: #def }

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

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

jsp

action里读取数据而不是

其中xxx为对象中的带有

getter

的变量>。

17.使用displaytag必须在display:table

时,在一列中放入多个元素中定义一个id

操作\">

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

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

\"/Bookshop/admin/bookManagement.do?action=delete&id=<%=((Book)item).getId()%>\">删除 要在displaytag

中使用链接,必须具备

paramId,否则不显示为链接

可以这样使用

display

其中product为对象18.19.实验struts-upload这一行要打钩

2.If

you checked the box to write to a file,

c:\\b.jpg

The file has been written to \"c:\\b.jpg\"

please specify the file

path here:

在这里要重命名如:

例子时要注意的地方:

name = \"xxxx\" property = \"xxx\"/>

可以直接取到

session.getAttribute()

查看

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

上传成功的话,会出现提示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. 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-config25.在struts定向为.jsp

26.以后在判断相等性之前先用27.从session里getAttribute28.在hibernate每个类中必须有

logger把两个值显示出来。后,修改并不需要重新

setAttribute

一次。mapping。

的action = \"x\"

写成了 action = \"x.do\"

中,forward时使用redirect = \"true\"

可以将.do重

中,strut-config.xml

中使用subclass是一棵继承树共用一个表,仅生成个discrimator-value

configuration

。在最上层的类中必须声明:

里去。(即不可addClass(子类))

@hibernate.discriminator column = \"class\"不可以将子类添加到/**

使用Xdoclet的建立subclass的例子(该类是父类) * @hibernate.class discriminator-value = \"customer\" * @hibernate.discriminator column = \"class\" */

而使用joined-subclass/**

* @hibernate.joined-subclass * @hibernate.joined-subclass-key * column=\"customer_id\" */

如果发现生成的

mapping文件中joined-subclass

这句没有写对。

Member extends Customer

生成的表,仔细看。

的key column为空,那么可能是

@hibernate.joined-subclass-key用joined-subclasscreate 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),

则是一类一表,也不许将子类添加进

configuration

里去。

primary key (customer_id) )

29.在junit30.Hibernate

如果Child extends Parent 那么from Parent as parent 出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 则默认取成员变量名如

Customer a 则name = \"a\" 33.出现异常:

Exceptionobject references an unsaved transient instance - save the transient instance before flushing: src.persistent.Product 原因没有为某对象进行34.

\"xxx action = \"/a\" Caused by: java.sql.SQLException: ORA-02291: 47687CCA6B) - 未找到父项关键字

违反完整约束条件

(BOOKSHOP.FK4AAEE

不用.do和根目录名需要.do和根目录名

set设置,如上边的这个就是某对象没有调用

setProduct

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

中name的值不符,则会出现上边的异常。如果不显示指定

name

也将会将Child选出来,而from Child as child

则不会选

中尽量使用assertEquals

代替assertTrue;

如果你觉得该做的例如a extends b

e是出现这个问题,那么检查一下,是否将类的继承关系在

或subclass

hibernate

的mapping中反映了出来。joined-subclass

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

36.使用DynaActionForm需要注意的问题在struts-config

声明

在Action里将form强制转化成DynaActionForm,然后get(\"属性名\")就可以了37.那位大侠能给出一个用Query q = s.find(\".....\"); q.setFirstResult(10); q.setMaxResults(100); // ...... 38.struts

的validate

默认已有)

继承的validate

函数

最简单实现

//

从第11条记录开始取出100条hibernate

进行分页得实际例子,学习中!

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

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

errors.required={0} is required.(2.Form必须从ValidatorForm3.不可以重载ValidatorForm4.在validate.xml

(该参数将在显示错误信息是从

不需要在action里做任何处理。只管何有关用于处理出错信息的处理。39.服务器报

The requested resource (/xxxx/xxx.htm) is not available.在web.xml中定义的tld,没有找到或者是lib目录下的包太多出现了问题。如

的很奇怪的一个的可能原因

forward就行了。作为

forward的目标页,不需要任

xxx.properties

读取prompt.userName,填入{}方括号里,

取代0。如果是arg1将将填入{1}位置,以此类推。

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

/spring

/WEB-INF/spring.tld

如WEB-INF目录下不存在40.

spring的xxx-servlet.xml

的使用SimpleFormController

系列的类问题:

true priceIncrease PriceIncrease priceIncrease hello

这里要注意几个问题:(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)priceIncrease 这一行必不可少,priceIncrease如果缺少该行,则报:

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的rejectValuerejectValue(java.lang.String

相关问题:

field,

java.lang.String

errorCode, java.lang.Object[]

是页面的名字,他将会是prefix + priceIncrease

+ suffix

spring.tld

的话,就会报上边的错误

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的RequestUtilsgetStringParameter public static java.lang.String

getStringParameter(javax.servlet.http.HttpServletRequest request,

&bsp;

java.lang.String name, java.lang.String defaultVal)

Get a string 不会抛异常

Hibernate的问题:2.1rc的问题

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

net.sf.hibernate.HibernateException: could not instantiate CacheProvider: 解决办法,2.1rc比以前的版本多需要一个包ehcache.jar 43.staticstatic而static44.

java.lang.NoClassDefFoundError: javax/transaction/Synchronization]; 需要添加JTA.jar

的问题

static

成员变量。

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

parameter,

with a fallback value. Never throws

an exception. Can pass

a distinguished value to default to enable checks of whether it was supplied.

函数只可以访问