常见异常

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39231550/article/details/76822249

一、Struts2

1.1 NoSuchBeanDefinitionException

 

 

异常描述:

没有suchbean定义异常:没有匹配的PlatformTransactionManager  Bean

异常信息:

 

 

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'transactionManager' is defined: No matching PlatformTransactionManager bean found for qualifier 'transactionManager'

 

异常原因:

事务管理Bean命名错误

解决方案:

检查applicationContext配置文件hibernate事务管理命名

解决人:

 

备注:

 

 

 

 

模板

 

异常描述:

 

 

异常信息:

 

异常原因:

 

解决方案:

 

解决人:

Hyj

备注:

 


 

二、Hibernate

2.1 ClassNotFoundException

异常描述:

找不到FilterDefinition

异常信息:

 

 

java.lang.ClassNotFoundException: org.hibernate.engine.FilterDefinition

        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)

        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)

        ... 44 more

 

继而引发org.springframework.beans.factory.BeanCreationException

异常原因:

 

解决方案:

 

解决人:

 

备注:

 

 

 

 

2.2 NoSuchMethodError

异常描述:

 

异常信息:

o java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;

        at org.springframework.orm.hibernate3.SessionFactoryUtils.doGetSession(SessionFactoryUtils.java:328)

        at org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(SessionFactoryUtils.java:208)

        at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.getSession

 

异常原因:

因为opensessioninview filter的问题,如果你的配置还是hibernate3,需要改为hibernate4 

<filter>

    <filter-name>openSessionInViewFilter</filter-name>

   <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>

</filter>

 

由于Hibernate4已经完全可以实现事务了, Spring3.1中的hibernatedao,hibernateTemplete等有冲突,所以Spring3.1里已经不提供Hibernatedaosupport,HibernateTemplete了,只能用Hibernate原始的方式用session:

        Session session = sessionFactory.openSession();
        Session session = sessionFactory.getCurrentSession();
basedao里可以用注入的sessionFactory获取session.

注意配置事务的时候必须将父类baseServiceImpl也配上,要不然会出现错误:No Session found for currentthread, 以前是不需要的

SessionFactory.getCurrentSession()的后台实现是可拔插的。因此,引入了新的扩展接口 (org.hibernate.context.spi.CurrentSessionContext)

新的配置参数(hibernate.current_session_context_class),以便对什么是当前session”的范围和上下文(scope and context)的定义进行拔插。

 

Spring @Transactional声明式事务管理,”currentSession”的定义为当前被 Spring事务管理器 管理的Session,此时应配置:

hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

 

此处一定注意 使用 hibernate4,在不使用OpenSessionInView模式时,在使用getCurrentSession()时会有如下问题: 当有一个方法list 传播行为为Supports,当在另一个方法getPage()(无事务)调用list方法时会抛出org.hibernate.HibernateException: No Session found for current thread 异常。 这是因为getCurrentSession()在没有session的情况下不会自动创建一个,不知道这是不是Spring3.1实现的bug 因此最好的解决方案是使用REQUIRED的传播行为

 

解决方案:

 

解决人:

 

备注:

 

 

 


 

三、Spring

 

 


 

四、SSH项目整合

 

4.1 ClassCastException

 

异常描述:

在使用springv4)和hibernatev4)开发应用程序时发生如下异常

异常信息:

ClassCastException: org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder

        at org.springframework.orm.hibernate3.SessionFactoryUtils.doGetSession(SessionFactoryUtils.java:293)

        at org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(SessionFactoryUtils.java:239)

        at org.springframework.orm.hibernate3.HibernateTemplate.getSession(HibernateTemplate.java:461)

异常原因:

一个可能的原因是DAO类中使用了Hibernate v3HibernateDaoSupport

解决方案:

改用下面的类恢复正常:org.springframework.orm.hibernate4.support.HibernateDaoSupport

解决人:

 

备注:

 

 

 

4.2  NoSuchBeanDefinitionException

异常描述:

org.springframework.beans.factory.NoSuchBeanDefinitionException无法自动注入,Spring容器无法创建类

异常信息:

No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

        at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1380)

        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1126)

异常原因:

1.检查domain和service的applicationContext.xml文件,检查sessionFactory和transactionManager的bean标签的class

解决方案:

 

解决人:

 

备注:

复制项目的配置文件是容易忽略框架的版本的差异

 

4.3 NoSuchBeanDefinitionException

异常描述:

持久层框架选用Spring Data JPA,启动项目没问题,服务器发起请求时,经过过滤器,报错NoSuchBeanDefinitionException

异常信息:

Servlet.service() for servlet [jsp] in context with path [] threw exception

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

        at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:704)

        at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1175)

        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)

        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)

        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1060)

        at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:190)

        at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:175)

        at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:126)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

异常原因:

Web.xml是复制纯SSH的, Spring Data JPA框架里面用EntityManager代替了session.

解决方案:

Web.xml不需要配置OpenSessionInViewFilter

解决人:

施文

备注:

 

 

 

ERROR Dispatcher:38 - Exception occurredduring processing request: null

 

 

4.4 NullPointerException

异常描述:

空指针异常ERROR Dispatcher:38 - Exception occurred during processing request: null

 

异常信息:

ERROR Dispatcher:38 - Exception occurred during processing request: null

at com.hyj.bos.service.standard.impl.StandardServiceImpl.saveStandard(StandardServiceImpl.java:30)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:606)

 

       

异常原因:

Service层的dao属性没有加@Autowired注解

解决方案:

加上注解

解决人:

Hyj

备注:

 

 

 

 

4.5 LazyInitializationException

异常描述:

页面展示所有数据时,懒加载异常

异常信息:

failed to lazily initialize a collection of role: com.hyj.bos.domain.Staff.decidedzones, could not initialize proxy - no Session

        at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:566)

        at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:186)

        at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545)

异常原因:

 

解决方案:

domain模块的pom.xml文件加上json序列化插件struts2-json-plugin.

加载StaffDecidedzone 信息,使用@JSON注解排除

Web 模块的struts2-json-plugin.jar插件坐标从pom中移除!

解决人:

Hyj

备注:

 

 


 

 

五、SSH启动报错

 

5.1 java.net.BindException

异常描述:

Address already in use: JVM_Bind <null>:80

 

异常信息:

 

异常原因:

 

解决方案:

 

解决人:

Hyj

备注:

 

 

 

5.2 MySQLIntegrityConstraintViolationException

异常描述:

MySQLIntegrityConstraintViolationException

异常信息:

com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry 'hyj@163.com' for key 'UK_cfnuhut3xdl14kbunonsc5i6c'

        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)

        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)

        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)

异常原因:

 

解决方案:

 

解决人:

Hyj

备注:

 

 

 

 


 

 

6Maven启动报错

6.1 没有将父工程最先发布到仓库方便子工程继承

异常描述:

Dao, service utils子项目执行install命令时报错

异常信息:

Failed to execute goal on project bos-utils: Could not resolve dependencies for project

com.hyj:bos-utils:jar:0.0.1-SNAPSHOT:

Failed to collect dependencies at com.hyj:bos-domain:jar:0.0.1-SNAPSHOT:

Failed to read artifact descriptor for com.hyj:bos-domain:jar:0.0.1-SNAPSHOT:

 Could not find artifact com.hyj:bos-parent:pom:0.0.1-SNAPSHOT -> [Help 1]

 

The import com.hyj.bos.service cannot be resolved     

 

UserAction.java      /bos-web/src/main/java/com/hyj/bos/web/action        line 10     Java Problem

 

异常原因:

 

解决方案:

 

解决人:

 

备注:

 

6.2

展开阅读全文

没有更多推荐了,返回首页