java异常

java.lang.IllegalStateException: Failed to load ApplicationContext
各位大神,我是学习Java的小白,最近运行一个ssh项目时遇到一个bug,找了好久都没解决,好绝望呀。我都想放弃学习Java了。希望各位大神能高抬贵手,给点宝贵的意见,指点一下迷津,万分感谢。
我找的一些原因是jar版本过低,但是我的版本是hibernate-commons-annotations-5.0.1.Final.
我检查过该导的包都导了。
导包(41个)
  1.hibernate
  (1)hibernate/lib/required
  (2)hibernate/lib/jpa | java persist api java的持久化规范(接口)
  3)数据库驱动
  2.struts2
  (1)struts-blank.war/WEB-INF/lib/*
   注意:javassist-3.18.1-GA.jar包与hibernate中的重复(只保留高版本即可
   (2)struts整合spring插件包
   注意:这个包一旦导入,那么struts2在启动时就会寻找spring容器.找不到将会抛出异常
   3.spring
  (1)基本:4+2
   core | beans | context | expression | logging | log4j
  (2)整合web:web包
   spring-web
  (3)整合aop:4个
   spring-aop | spring-aspect | aop联盟 | aopweaving
  (4)整合Hibernate和事务:4个
   spring-jdbc | spring-tx | c3p0 | spring-orm
  (5)整合junit4测试:test包
   spring-test
  4.标签库
   standard.jar | jstl-1.2.jar
  
错误:

java.lang.IllegalStateException: Failed to load ApplicationContext
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ClassLoaderDelegate
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:735)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:128)
	at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
	at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:108)
	at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:251)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
	... 25 more
Caused by: java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ClassLoaderDelegate
	at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:127)
	at org.hibernate.boot.MetadataSources.getMetadataBuilder(MetadataSources.java:135)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:655)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
	at org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:511)
	at org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:495)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1642)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1579)
	... 40 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.ClassLoaderDelegate
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 48 more

Test类:

package cn.itcast.test;

import javax.annotation.Resource;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import cn.itcast.dao.UserDao;
import cn.itcast.domain.User;

//测试Hibernata框架
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class HiberanateTest {
	@Resource(name="sessionFactory")
	private SessionFactory sf;
	@Resource(name="userDao")
	private UserDao ud;
	@Test
	//测试Dao hibernate模板
  public  void fun1(){
		User user = ud.getByUserid(0);
        System.out.println(user);
  }
 }

ssh_crm/src/applicationContext.xml:

// An highlighted block
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	                    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 
	                    http://www.springframework.org/schema/context 
	                    http://www.springframework.org/schema/context/spring-context-4.3.xsd 
	                    http://www.springframework.org/schema/aop 
	                    http://www.springframework.org/schema/aop/spring-aop-4.3.xsd 
	                    http://www.springframework.org/schema/tx 
	                    http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
 <!-- 读取db.properties文件 -->	
 <context:property-placeholder location="classpath:db.properties"/>                    
 <!-- 配置C3P0连接池 -->
 <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
   <property name="driverClass"  value="${datasource.driverClassName}"></property>
   <property name="jdbcUrl" value="${datasource.url}"></property>
   <property name="user" value="${datasource.username}"></property>
   <property name="password"  value="${datasource.password}"></property>
 </bean>
 
 
 
 
 <bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <!-- 将连接池注入到sessionFactory,hibernate会通过连接池获得连接 -->
     <property name="dataSource" ref="dataSource"></property>
   <!-- 方案一:任然使用外部的hibernate.cfg.xml配置信息 -->
   <!--  <property name="configLocation" value="classpath:/ssh_crm/src/hibernate.cfg.xml"></property> -->
   <property name="hibernateProperties">
   <!-- 配置hibernate基本信息 -->
    <props>
     <!-- 连接池已代替  <prop key="myeclipse.connection.profile">oracle.jdbc.driver.OracleDriver</prop>
      <prop key="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</prop>
      <prop key="connection.username">scott</prop>
      <prop key="connection.password">tiger</prop>-->
      
      
      
      <prop key="connection.driver_class">oracle.jdbc.OracleDriver</prop>
      <prop key="dialect">org.hibernate.dialect.Oracle10gDialect</prop>
      <prop key="hibernate.show_sql">true</prop>
      <prop key="hibernate.format_sql">true</prop>
      <prop key="hibernate.hbm2ddl.auto">update</prop>
    </props>
   </property>
   <!-- 引入orm元数据,指定元数据所在的包路径,spring会自动读取包中的所有配置 -->
   <property name="mappingDirectoryLocations" value="cn/itcast/domain"></property>
 </bean>
 <bean name="userAction" class="cn.itcast.web.action.UserAction" scope="prototype">
 <!-- 注意:Action的作用范围一定是多例的,符合struts2的架构  : scope="prototype" -->
   <property name="userService" ref="userSevice"></property>
 </bean>
 <!-- dao的配置 -->
 <bean name="userDao" class="cn.itcast.dao.impl.UserDaoImpl">
 <!-- 注入SessionFactory -->
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
</beans>

/ssh_crm/src/hibernate.cfg.xml

// An highlighted block
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
	<!-- 数据库连接相关 -->
	<property name="myeclipse.connection.profile">
		oracle.jdbc.driver.OracleDriver
	</property>
	<property name="connection.url">
		jdbc:oracle:thin:@localhost:1521:orcl
	</property>
	<property name="connection.username">scott</property>
	<property name="connection.password">tiger</property>
	<property name="connection.driver_class">
		oracle.jdbc.OracleDriver
	</property>
	<property name="dialect">
		org.hibernate.dialect.Oracle10gDialect
	</property>
	<!-- 第二部分: 配置hibernate信息  可选的-->
		<!-- 输出底层sql语句 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 输出底层sql语句格式 -->
		<property name="hibernate.format_sql">true</property>
		<!-- hibernate帮创建表,需要配置之后 
			update: 如果已经有表,更新,如果没有,创建
		-->
		<property name="hibernate.hbm2ddl.auto">update</property>
		<!-- hibernate中不用设置隔离级别,因为hiberanate交给Spring,由Spring设置隔离级别
		   hibernate中也不要session与指定线程绑定(<property name="current_session_context_class">
            thread
           </property>),Spring会做处理,否则会冲突。
		 -->
    <!-- hibernate配置相关 -->
	<!--  把映射文件放到核心配置文件中 必须的-->
		<mapping resource="cn/itcast/domain/User.hbm.xml"/>
		<mapping resource="cn/itcast/domain/Customer.hbm.xml"/>
		<mapping resource="cn/itcast/domain/LinkMan.hbm.xml"/>
</session-factory>
</hibernate-configuration>

/ssh_crm/WebRoot/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name>ssh-crm</display-name>
  <!-- 让Spring随这web启动而创建的监听器 -->
  	<listener>
  	 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  	</listener>
  	<!-- 配置spring配置文件位置参数 -->
  	<context-param>
  	 <param-name>contextConfigLocation</param-name>
  	 <param-value>classpath:applicationContext.xml</param-value>
  	</context-param>
  	<!-- struts2核心过滤器 -->
  	<filter>
  	 <filter-name>struts2</filter-name>
  	 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  	</filter>
  	
  	<filter-mapping>
  	 <filter-name>struts2</filter-name>
  	 <url-pattern>/*</url-pattern>
  	</filter-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

/ssh_crm/src/db.properties

datasource.driverClassName= oracle.jdbc.driver.OracleDriver
datasource.url= jdbc:oracle:thin:@localhost:1521:orcl
datasource.username = scott
datasource.password=tiger
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值