2023年11月29日发(作者:)

Java常见异常种类

------------------------------第⼀种理解----------------------

1、什么是异常

结构不佳的代码不能运⾏,这是Java的基本理念。

发现错误的理想时机是在编译期。然⽽,编译器并不能发现所有的错误,余下的问题就需要在程序运⾏时解决。这就需要错误能通过某种⽅

式,把适当的信息 传递给特定的接收者处理。Java中的异常处理的⽬的在于通过使⽤少量的代码来简化⼤型、可靠的程序的⽣成,通过此⽅式

让你的应⽤中没有未处理的错误,⽽ 且它还带来了⼀个明显的好处:降低错误处理代码的复杂度。

异常,根据字⾯理解,有意外之意。把它置于代码层⾯来理解,即阻⽌了当前⽅法或作⽤域继续执⾏。

Java中,异常被当做对象来处理,其基类是Throwable

2Java中的异常类型

JavaThrowable直接派⽣出ExceptionError。其中Exception是可以抛出的基本类型,在Java类库、⽅法以及运⾏时故障中都可能抛出

Exception型异常。Exception表⽰可以恢复的异常,是编译器可以捕捉到的;Error表⽰编译时和系统错误,表⽰系统在运⾏期间出现了严重的

错误,属于不可恢复的错误,由于这属于JVM层次的严重错误,因此这种错误会导致程序终⽌执⾏。Exception⼜分为检查异常和运⾏时异

常。异常类的结构层次图如下:

典型的RuntimeException(运⾏时异常)包括NullPointerException, ClassCastException(类型转换异常)IndexOutOfBoundsException(越界

异常), IllegalArgumentException(⾮法参数异常),ArrayStoreException(数组存储异常),AruthmeticException(算术异

),BufferOverflowException(缓冲区溢出异常)等;

RuntimeException(检查异常)包括IOException, SQLException,InterruptedException(中断异常-调⽤线程睡眠时

),NumberFormatException(数字格式化异常)等。

⽽按照编译器检查⽅式划分,异常⼜可以分为检查型异常(CheckedException)和⾮检查型异常 UncheckedException)。Error

RuntimeException合起来称为UncheckedException,之所以这么 称呼,是因为编译器不检查⽅法是否处理或者抛出这两种类型的异常,因此

编译期间出现这种类型的异常也不会报错,默认由虚拟机提供处理⽅式。除了Error RuntimeException这两种类型的异常外,其它的异常都

称为Checked异常。

補充:今天在遇到NumberFormatException异常的时候更加理解了检查型异常和⾮检查型异常的区别

⾮检查型异常也就是运⾏时异常,对于运⾏时异常即使我们在⼀个⽅法上throws声明可能抛出异常,编译器也会检测到是运⾏时异常⽽不

要求我们在主⽅法中必须处理;对于检查型异常我们throws声明之后也必须处理才可以编译通过。

例如:对于运⾏时异常NumberFormatException下⾯代码正确编译

package ;

/**

*

* @author Administrator

*

*/

public class MyTest {

public static void test1() throws NumberFormatException {

String str = "11,22,33,fg,44,55,66";

String[] split = (",");

for (String s : split) {

n(ong(s));

}

}

public static void main(String[] args) {

1();

}

}

查看NumberFormatException的继承结构:(继承⾃RuntimeException---⾮检查异常、运⾏时异常,不是必须处理)

对于SQLException之类的检查异常必须处理,否则会报错:

查看SQLException的结构:---直接继承Exception的是检查型异常,必须处理

3Java如何处理异常

3.1 try-catch, try-finally, try-catch-finally

对于checked类型异常,我们要么对它进⾏处理,要么在⽅法头使⽤throws抛出。

public static void createFile() throws IOException{

File file = new File("C:/");

if(!()){

NewFile();

} catch (IOException ex) {

// handle exception here

}

}

关于catch需要注意的⼏点:

1)、参数的异常类型必须是Throwable类或者其⼦类。

2)、从上往下的catch语句,其参数类型必须按照从⼦类到⽗类顺序,因为⼀旦匹配到⼀个类型,就会忽略往后的catch。⽐如IOException必须

放到Exception前⾯,否则编译器会报错。

3)、可以有⼀个或者多个catch语句,甚⾄如果有finally语句的情况下,可以没有catch语句,如try-finally

想要捕获多个异常,可以使⽤多个catch语句,JDK7以后提供了另外⼀种⽅式:多重捕获(multi-catch)

try{

// other code

} catch (IOException | SQLException ex) {

throw ex;

}

4)、不要忽略异常。空的catch块会使异常达不到应有的⽬的,除⾮诸如关闭FileInputStream的时候,因为你还没有改变⽂件的状态,因此不必

执⾏任何恢复动作,并且已经从⽂件中读取到所需要的信息,因此不⽤终⽌正在进⾏的操作。

关于finally需要注意的⼏点:

1)finally中的代码总是会被执⾏,除⾮在执⾏try或者catch语句时虚拟机退出((1))

2)finally块可以做⼀些资源清理⼯作,如关闭⽂件、关闭游标等操作。

3)finally块不是必须的。

另外,如果在tryfinally块中都执⾏了return语句,最终返回的将是finally中的return值。

3.2 异常链

常常想要在捕获⼀个异常后抛出另外⼀个异常,并且希望把原始异常信息保存下来,这就是异常链。在JDK1.4以后,Throwable⼦类在构造器

中可以接受⼀个cause对象作为参数,表⽰原始异常,通过这样把原始异常传递给新的异常,使得即使在当前位置创建并抛出了新的异常,也

能通过这个异常链 追踪到异常最初发⽣的位置。

但在Throwable⼦类中,只有Error, Exception, RuntimeException三类异常类提供了带cause参数的构造器,其它类型的异常则需要通过

initCause()⽅法。例如定义了CustomException类,可以这样使⽤:

CustomException cmex = new CustomException();

use(new NullPointerException);

throw cmex;

这样⼀来,CustomException继承⾃ExceptionRuntimeException,就属于⾃定义异常了。

⼀般来说,⾃定义异常的作⽤有以下情形:

1)、将检查型异常转换为⾮检查型异常。

2)、在产⽣异常时封装上下⽂信息、定义异常码、收集环境对象,有利于信息的传递。

4、异常使⽤指南

1)、在知道该如何处理的情况下才捕获异常。

2)、⾃定义异常类型,⽤以封装所有的检查型异常。

3)、在程序的边界进⾏异常捕获。如服务端相应客户端的请求,在出⼝处catch内部有可能产⽣的异常,并统⼀throw⼀个封装过的异常给客户

端,免得暴露服务端敏感信息。

4)、只针对异常的情况才使⽤异常。不要在所有的代码中习惯性地使⽤try-catch,因为这会影响性能。

5)、抛出与抽象相对的异常。如果⽅法抛出的异常与它执⾏的任务没有明显的联系,这种情形会使⼈不知所措。为了避免这个问题,更⾼层的

实现应该捕获 低层的异常,同时抛出可以按照⾼层抽象进⾏解释的异常,这种做法被称为异常转译(exception translation),如下:

try{

// use lower-level abstraction to do our bidding

} catch(LowerLevelException ex){

throw new HigherLevelException(...);

}

另外⼀种特殊的异常转译称为异常链,上⾯已作描述。如果低层的异常对于调试导致⾼层异常的问题⾮常有帮助,使⽤异常链就很合适。⾼层

的异常提供访问⽅法(se)来获得低层的异常。

6)、每个⽅法抛出的异常要有⽂档描述。利⽤Javadoc@throws标记,记录抛出每个异常的条件。如果⼀个⽅法可能抛出多个异常,不要使

⽤这些异常类的某个超类。如不要声明⼀个⽅法“throws Exception”“throws Throwable”,这将没有任何指导信息。

-----------------第⼆种理解----------

Java Exception

1Error

2Runtime Exception 运⾏时异常

3Exception

4throw ⽤户⾃定义异常

异常类分两⼤类型:Error类代表了编译和系统的错误,不允许捕获;Exception类代表了标准Java库⽅法所激发的异常。Exception 还包含运

⾏异常类Runtime_Exception和⾮运⾏异常类Non_RuntimeException这两个直接的⼦类。

运⾏异常类对应于编译错误,它是指Java程序在运⾏时产⽣的由解释器引发的各种异常。运⾏异常可能出现在任何地⽅,且出现频率很⾼,因

此为了避免巨⼤的 系统资源开销,编译器不对异常进⾏检查。所以Java语⾔中的运⾏异常不⼀定被捕获。出现运⾏错误往往表⽰代码有错误,

如:算数异常(如被0除)、下标异 常(如数组越界)等。

⾮运⾏异常时Non_RuntimeException类及其⼦类的实例,⼜称为可检测异常。Java编译器利⽤分析⽅法或构造⽅法中可能产⽣的结果来检

Java程序中是否含有检测异常的处理程序,对于每个可能的可检测异常,⽅法或构造⽅法的throws⼦句必须列出该异常对应的类。在Java的标

准包 中定义的异常都是⾮运⾏异常。

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

⽂件已结束异常:EOFException

⽂件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

操作数据库异常:SQLException

输⼊输出异常:IOException

⽅法未找到异常:NoSuchMethodException

ctMethodError

抽象⽅法错误。当应⽤试图调⽤抽象⽅法时抛出。

ionError

断⾔错。⽤来指⽰⼀个断⾔失败的情况。

ircularityError

类循环依赖错误。在初始化⼀个类时,若检测到类之间循环依赖则抛出该异常。

ormatError

类格式错误。当Java虚拟机试图从⼀个⽂件中读取Java类,⽽检测到该⽂件的内容不符合类的有效格式时抛出。

错误。是所有错误的基类,⽤于标识严重的程序运⾏问题。这些问题通常描述⼀些不应被应⽤程序捕获的反常情况。

ionInInitializerError

初始化程序错误。当执⾏⼀个类的静态初始化程序的过程中,发⽣了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。

lAccessError

违法访问错误。当⼀个应⽤试图访问、修改某个类的域(Field)或者调⽤其⽅法,但是⼜违反域或⽅法的可见性声明,则抛出该异常。

atibleClassChangeError

不兼容的类变化错误。当正在执⾏的⽅法所依赖的类定义发⽣了不兼容的改变时,抛出该异常。⼀般在修改了应⽤中的某些类的声明定义⽽没

有对整个应⽤重新编译⽽直接运⾏的情况下,容易引发该错误。

tiationError

实例化错误。当⼀个应⽤试图通过Javanew操作符构造⼀个抽象类或者接⼝时抛出该异常.

alError

内部错误。⽤于指⽰Java虚拟机发⽣了内部错误。

eError

链接错误。该错误及其所有⼦类指⽰某个类依赖于另外⼀些类,在该类编译之后,被依赖的类改变了其类定义⽽没有重新编译所有的类,进⽽

引发错误的情况。

sDefFoundError

未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,⽽找不到该类的定义时抛出该错误。

FieldError

域不存在错误。当应⽤试图访问或者修改某类的某个域,⽽该类的定义中没有该域的定义时抛出该错误。

MethodError

⽅法不存在错误。当应⽤试图调⽤某类的某个⽅法,⽽该类的定义中没有该⽅法的定义时抛出该错误。

emoryError

内存不⾜错误。当可⽤内存不⾜以让Java虚拟机分配给⼀个对象时抛出该错误。

verflowError

ndexOutOfBoundsException

数组索引越界异常。当对数组的索引值为负数或⼤于等于数组⼤⼩时抛出。

toreException

数组存储异常。当向数组中存放⾮数组声明类型对象时抛出。

astException

类造型异常。假设有类ABA不是B的⽗类或⼦类),OA的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制

类型转换异常。

otFoundException

找不到类异常。当应⽤试图根据字符串形式的类名构造类,⽽在遍历CLASSPAH之后找不到对应名称的class⽂件时,抛出该异常。

otSupportedException

不⽀持克隆异常。当没有实现Cloneable接⼝或者不⽀持克隆⽅法时,调⽤其clone()⽅法则抛出该异常。

nstantNotPresentException

枚举常量不存在异常。当应⽤试图通过名称和枚举类型访问⼀个枚举对象,但该枚举对象并不包含常量时,抛出该异常。

ion

根异常。⽤以描述应⽤程序希望捕获的情况。

lAccessException

违法的访问异常。当应⽤试图通过反射⽅式创建某个类的实例、访问该类属性、调⽤该类⽅法,⽽当时⼜⽆法访问类的、属性的、⽅法的或构

造⽅法的定义时抛出该异常。

lMonitorStateException

违法的监控状态异常。当某个线程试图等待⼀个⾃⼰并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该

异常。

lStateException

违法的状态异常。当在Java环境和应⽤尚未处于某个⽅法的合法调⽤状态,⽽调⽤了该⽅法时,抛出该异常。

lThreadStateException

违法的线程状态异常。当县城尚未处于某个⽅法的合法调⽤状态,⽽调⽤了该⽅法时,抛出异常。

utOfBoundsException

索引越界异常。当访问某个序列的索引值⼩于0或⼤于等于序列⼤⼩时,抛出该异常。

tiationException

实例化异常。当试图通过newInstance()⽅法创建某个类的实例,⽽该类是⼀个抽象类或接⼝时,抛出该异常。

uptedException

被中⽌异常。当某个线程处于长时间的等待、休眠或其他暂停状态,⽽此时其他的线程通过Threadinterrupt⽅法终⽌该线程时抛出该异常。

veArraySizeException

数组⼤⼩为负值异常。当使⽤负数⼤⼩值创建数组时抛出该异常。

FieldException

属性不存在异常。当访问某个类的不存在的属性时抛出该异常。

MethodException

⽅法不存在异常。当访问某个类的不存在的⽅法时抛出该异常。

interException

空指针异常。当应⽤试图在要求使⽤对象的地⽅使⽤了null时,抛出该异常。譬如:调⽤null对象的实例⽅法、访问null对象的属性、计算null

象的长度、使⽤throw语句抛出null等等。

FormatException

数字格式异常。当试图将⼀个String转换为指定的数字类型,⽽该字符串确不满⾜数字类型要求的格式时,抛出该异常。

eException

运⾏时异常。是所有Java虚拟机正常操作期间可以被抛出的异常的⽗类。

tyException

安全异常。由安全管理器抛出,⽤于指⽰违反安全情况的异常。

IndexOutOfBoundsException

字符串索引越界异常。当使⽤索引值访问某个字符串中的字符,⽽该索引值⼩于0或⼤于等于序列⼤⼩时,抛出该异常。

tPresentException

类型不存在异常。当应⽤试图以某个类型名称的字符串表达⽅式访问该类型,但是根据给定的名称⼜找不到该类型是抛出该异常。该异常与

ClassNotFoundException的区别在于该异常是unchecked(不被检查)异常,⽽ClassNotFoundException checked(被检查)异常。

ortedOperationException

不⽀持的⽅法异常。指明请求的⽅法不被⽀持情况的异常。

异常

eption: Cannot retrieve mapping for action /Login /Login是你的action名字)

可能原因

action没有再 中定义,或没有找到匹配的action,例如在JSP⽂件中使⽤ 将表单提交给

处理,如果出现上述异常,请查看中的定义部分,有 时可能是打错了字符或者是某些不符合规则,可以使⽤strutsconsole

具来检查。

-----------------------------------------------------------------------------------------------------------------

异常

Exception: Cannot retrieve definition for form bean null

可能原因

这个异常是因为Struts根据中的mapping没有找 action期望的form bean。⼤部分的情况可能是因为在form-bean中设置的

name属性和action中设置的name属性不匹配所致。换句话说,action form都应该各⾃有⼀个name属性,并且要精确匹配,包括⼤⼩写。这

个错误当没有name属性和action关联时也会发⽣,如果没有在action 中指定name属性,那么就没有name属性和action相关联。当然当action

作某些控制时,譬如根据参数值跳转到相应的jsp页⾯,⽽不是处 理表单数据,这是就不⽤name属性,这也是action的使⽤⽅法之⼀。

-----------------------------------------------------------------------------------------------------------------

异常

No action instance for path /xxxx could be created

可能原因

特别提⽰:因为有很多中情况会导致这个错误的发⽣,所以推荐⼤家调⾼你的web服务器的⽇志/调试级别,这样可以从更多的信息中看 到潜在

的、在试图创建action类时发⽣的错误,这个action类你已经在中设置了关联(即添加 标签)。

中通过action标签的class属性指定的action类不能被找到有很多种原因,例如:定位编译后 .class⽂件失败。Failure to

place compiled .class file for the action in the classpath (web开发中,class的的位置在r WEB-INF/classes,所以你的action class必须要在

这个⽬录下。例如你的action类位于WEB-INF/classes/action/,那么在 中设置action的属性type时就是).

拼写错误,这个也时有发⽣,并且不易找到,特别注意第⼀个字母的⼤⼩写和包的名称。

-----------------------------------------------------------------------------------------------------------------

异常

eption: No getter method for property username of bean

可能原因

没有位form bean中的某个变量定义getter ⽅法

这个错误主要发⽣在表单提交的FormBean中,⽤struts标记时,在FormBean中必须有⼀个getUsername()

法。注意字母“U”

-----------------------------------------------------------------------------------------------------------------

异常

sDefFoundError: org/apache/struts/action/ActionForm

可能原因

这个错误主要发⽣在在classpath中找不到相应的Java .class⽂件。如果这个错误发⽣在web应⽤程序的运⾏时,主要是因为指定的class⽂件不

web serverclasspath中(/WEB-INF/classes /WEB-INF/lib)。在上⾯的错误中,原因是找不到ActionForm类。

-----------------------------------------------------------------------------------------------------------------

异常

eption: Exception creating bean of class Form: {1}

可能原因

Instantiating Struts-provided ActionForm class directly instead of instantiating a class derived off ActionForm. This mightoccur implicitly if you

specify that a form-bean is this Struts ActionForm class rather than specifying a child of this classfor the form-bean.

Not associating an ActionForm-descended class with an action can also lead to this error.

-----------------------------------------------------------------------------------------------------------------

异常

eption: Cannot find ActionMappings or ActionFormBeans collection

可能原因

不是标识Struts actionServlet标记就是映射.do扩展名的标记或者两者都没有在中声明。

中的打字或者拼写错误也可导致这个异常的发⽣。例如缺少⼀个标记的关闭符号/>。最好使⽤struts console⼯具检查⼀

下。

另外,load-on-startup必须在中声明,这要么是⼀个空标记,要么指定⼀个数值,这个数值⽤来表servlet运⾏的优先级,数值越⼤优先

级越低。

还有⼀个和使⽤load-on-startup有关的是使⽤Struts预编译JSP⽂件时也可能导致这个异常。

-----------------------------------------------------------------------------------------------------------------

异常

interException at dURL(:1223)

可能原因

中的forward元素缺少path属性。例如应该是如下形式:

-----------------------------------------------------------------------------------------------------------------

异常

eption: Cannot find bean in any scope

Probable Causes

试图在Strutsform标记外使⽤form的⼦元素。这常常发⽣在你 后⾯使⽤Strutshtml标记。另外要注意可能你不经意使⽤的⽆

主体的标记,如,这样web 服务器解析时就当作⼀个⽆主体的标记,随后使⽤的所有标记都被认为是在这个标记之外

的,如⼜使⽤了还有就是在使⽤taglib引⼊HTML标记库时,你使⽤的prefix的值不是html

-----------------------------------------------------------------------------------------------------------------

异常

eption: Missing message for key

Probable Causes

这个key的值对没有在资源⽂件ties中定义。如果你使⽤eclipse时经常碰到这样的情况,当项⽬重新编译

时,eclipse会⾃动将classes⽬录下的资源⽂件删除。

资源⽂件ties 不在classpath中应将资源⽂件放到 WEB-INF/classes ⽬录下,当然要在中定义)

-----------------------------------------------------------------------------------------------------------------

异常

Cannot find message resources under key E

可能原因

很显然,这个错误是发⽣在使⽤资源⽂件时,⽽Struts没有找到资源⽂件。

Implicitly trying to use message resources that are not available (such as using empty html:options tag instead of specifyingthe options in its

body -- this assumes options are specified in ties file)

XML parser issues -- too many, too few, incorrect/incompatible versions

-----------------------------------------------------------------------------------------------------------------

异常

Strange and seemingly random characters in HTML and on screen, but not in original JSP or servlet.

可能原因

混和使⽤Strutshtml:form标记和标准的HTML标记不正确。

使⽤的编码样式在本页中不⽀持。

-----------------------------------------------------------------------------------------------------------------

异常

"Document contained no data" in Netscape

No data rendered (completely empty) page in Microsoft Internet Explorer

可能原因

使⽤⼀个Action的派⽣类⽽没有实现perform()⽅法或execute()⽅法。在Struts1.0中实现的是 perform()⽅法,在Struts1.1中实现的是execute()

⽅法,但Struts1.1向后兼容perform()⽅法。但你使⽤ Struts1.1创建⼀个Action的派⽣类,并且实现了execute()⽅法,⽽你在Struts1.0中运⾏的

话,就会得到"Document contained nodata" error message in Netscape or a completely empty (no HTML whatsoever) page rendered in

Microsoft Internet Explorer.”的错误信息。

---------------------------------------------------------------------------------------------------------------------------

异常

ServletException: te

解决⽅案

在⽤Struts上传⽂件时,遇到了tException: te异常。

ActionServlet并没有⽤到BeanUtils这些⼯具类。后来仔细检查代码发现是在jsp⽂件⾥的form忘了加 enctype="multipart/form-data" 了。所

以写程序遇到错误或异常应该从多⽅⾯考虑问题存在的可能性,想到系统提⽰信息以外的东西。

----------------------------------------------------------------------------------------------------------------------------

1. 定义Action, 如果指定了name, 那么必须要定义⼀个与它同名的FormBean才能进⾏form映射.2. 如果定义Action, 提交页⾯时出现 "No

input attribute for " 错误, 则需要在其input属性中定义转向的页⾯.3. 如果插⼊新的数据时出现 "Batch update row count

wrong:..." 错误, 则说明中指定的key的类型为原始类型(int, long),因为这种类型会⾃动分配值, ⽽这个值往往会让系统认为已经存

在该记录, 正确的⽅法是使⽤r对象.4. 如果插⼊数据时出现 "argument type mismatch" 错误, 可能是你使⽤了

Date等特殊对象, 因为struts不能⾃动从String型转换成Date,所以, 你需要在Action中⼿动把String型转换成Date.5. Hibernate, Query

iterator()list()⽅法快很多.6. 如果出现 "equal symbol expected" 错误, 说明你的strtus标签中包含另⼀个标签或者变量, 例如:

或者

"/>

这样的情况...

---------------------------------------------------------------------------------------------------------------------------

误:Exception in thread "main" mmarException: Could not execute JDBC batch update原因与解决: 因为

Hibernate Tools(或者Eclipse本⾝的Database Explorer)⽣成*.⼯具中包含有catalog="***"*表⽰数据库名称)这样的属性,将该属性

删除就可以了

---------------------------------------------------------------------------------------------------------------------------

错误:DeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)

原因与解决:

⽅法1 删除Set⽅的cascade

⽅法2 解决关联关系后,再删除

⽅法3 many-to-one⽅增加cascade 但值不能是none

最后⼀招:

检查⼀下hashCode equals是否使⽤了id作为唯⼀标⽰的选项了;我⽤时是没有问题的;但是⽤了native,就不⾏了,怎么办?删除

啊!

----------------------------------------------------------------------------------------------------------------------------

题:今天⽤Tomcat 5.5.12,发现原来很好⽤的系统不能⽤了,反复测试发现页⾯中不能包含 taglib,否则会出现以下提⽰:HTTP Status

500 -type Exception reportMessage description The server encountered an internal error () that prevented it from fulfilling this

Exception: /(1,1) Unable to read TLD "META-INF/tlds/" from JAR

file"file:*****/WEB-INF/lib/":原因:更新了⼯程⽤的lib⽂件夹下的jar,发布时也发布了 。解决:把

除就解决这个问题了。 -----------------------------------------------------------------------------------------------------------------------------

错误: interException

因: 发现 dao 实例、 manage 实例等需要注⼊的东西没有被注⼊(俗称空指针异常)解决:这个时候,你应该查看⽇志⽂件;默认是应⽤

服务器的 log ⽂件,⽐如 Tomcat 就是 [Tomcat 安装⽬录 ]/logs ;你会发现提⽰你:可能是:

eationException: Error creating bean with name 'sf' defined in ServletContextresource [/WEB-

INF/]: Initialization of bean failed; nested exception ateException: could not configure from URL:

file:src/ateException: could not configure from URL:

file:src/……………………….Caused by: tFoundException: 可能 是:

eationException: Error creating bean with name 'sessionFactory' defined inServletContext resource

[/WEB-INF/]: Initialization of bean failed; nested exception gException: Resource:

com/mcc/coupon/model/ not gException: Resource: com/mcc/coupon/model/

not found然后你就知道原因是因为配置⽂件的解析出了错误,这个通过 Web 页⾯是看不出来的。更多的是持久化影射⽂件出的错误;导致了

没有被解析;当然你需要的功能就⽆法使⽤了。

----------------------------------------------------------------------------------------------------------------------------

错误:StandardWrapperValve[action]: e() for servlet action threw exception

eption: Cannot retrieve mapping for action /settlementTypeManage

者: type Status report message Servlet action is not available description The requested resource (Servlet action is not available) is not

available.

原因:

----------------------------------------------------------------------------------------------------------------------------

StandardWrapperValve[jsp]: e() for servlet jsp threw otFoundException:

Tei界⾯错误具体描述:

Exception: Failed to load or instantiate TagExtraInfo class: Tei

原因与解决: <⽅案⼀>你的“html:”开头的标签没有放在⼀个 <⽅案⼆>重新启动你的应⽤服务器,⾃动就没有这个问题