问题描述
本人部署spring+ibatis时候启动web 出现如下错误信息严重: StandardWrapper.Throwableorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in ServletContext resource [/WEB-INF/configfiles/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: com/ibatis/common/xml/NodeletException[b][/b]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)at java.security.AccessController.doPrivileged(Native Method)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)at org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:81)at javax.servlet.GenericServlet.init(GenericServlet.java:212)at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)at org.apache.catalina.core.StandardService.start(StandardService.java:525)at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)at org.apache.catalina.startup.Catalina.start(Catalina.java:595)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)Caused by: java.lang.NoClassDefFoundError: com/ibatis/common/xml/NodeletExceptionat java.lang.Class.getDeclaredConstructors0(Native Method)at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)at java.lang.Class.getConstructor0(Class.java:2699)at java.lang.Class.getDeclaredConstructor(Class.java:1985)at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:54)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)... 34 moreCaused by: java.lang.ClassNotFoundException: com.ibatis.common.xml.NodeletExceptionat 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)... 40 more2011-9-5 15:28:06 org.apache.catalina.core.StandardContext loadOnStartup严重: Servlet /SpringAndIbatis threw load() exceptionjava.lang.ClassNotFoundException: com.ibatis.common.xml.NodeletExceptionat java.net.URLClassLoader$1.run(URLClassLoader.java:200)----------------------------------------------------------------------------------------上面的错误爆出:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in ServletContext resource [/WEB-INF/configfiles/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: com/ibatis/common/xml/NodeletException这个错误我看了一下是说找不到java.lang.NoClassDefFoundError: com/ibatis/common/xml/NodeletException这个类,但是我已经把ibaits的jar包已经加入到classpath中去了问什么还会出现这个错误呢有所不解,请大家帮忙看一下有没有这个现象。--------------------------------------------------------------------------------------------------------------我的spring配置文件如下:<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--此bean告诉Spring去哪找数据库的配置信息,因为有此Bean才出现下面用${}标记来取变量的语句 --><bean id="propertyConfig"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location"><value>/WEB-INF/configfiles/jdbc.properties</value></property></bean><!--配置一个数据源,根据上面propertyConfig指定的location去找数据库连接的配置信息 --><bean id="dataSource"class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"><property name="driverClass"><value>${jdbc.driverClassName}</value></property><property name="jdbcUrl"><value>${jdbc.url}</value></property><property name="username"><value>${jdbc.username}</value></property><property name="password"><value>${jdbc.password}</value></property><property name="idleConnectionTestPeriod" ><value>${jdbc.onnectionTestPeriod}</value></property><property name="idleMaxAge" ><value>${jdbc.maxAge}</value></property><property name="maxConnectionsPerPartition" ><value>${jdbc.maxConnectionsPerPartition}</value></property><property name="minConnectionsPerPartition" ><value>${jdbc.minConnectionsPerPartition}</value></property><property name="partitionCount" ><value>${jdbc.partitionCount}</value></property><property name="acquireIncrement" ><value>${jdbc.acquireIncrement}</value></property><property name="statementCacheSize" ><value>${jdbc.statementCacheSize}</value></property><property name="releaseHelperThreads"><value>${jdbc.releaseHelperThreads}</value></property></bean><!--根据dataSource和configLocation创建一个SqlMapClient --><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocation"><value>classpath:/WEB-INF/configfiles/SqlMapConfig.xml</value></property><property name="dataSource"><ref bean="dataSource" /></property></bean><!--根据sqlMapClien创建一个SqlMapClient模版类 --><bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"><property name="sqlMapClient"><ref bean="sqlMapClient" /></property></bean></beans>-----------------------------------------------------------ibatis配置文件如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig> <sqlMap resource="/WEB-INF/configfiles/AlarmRecord.xml"/> <sqlMap resource="/WEB-INF/configfiles/RecordValuesData.xml"/></sqlMapConfig> 问题补充:Wind_ZhongGang 写道
解决方案
重新构建一下呢?
解决方案二:
把<param-value>/WEB-INF/configfiles/applicationContext.xml</param-value> 改为<param-value>classpath*:configfiles/applicationContext.xml</param-value> 试试看或者直接<param-value>classpath*:configfiles/*.xml</param-value> 检查你的classpath的根路径
解决方案三:
你用的Spring的版本?初始化的代码也贴出来。参考一下: //这个会报错ApplicationContext ctx=new FileSystemXmlApplicationContext("conf/applicationContext.xml");//用这个ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"classpath*:conf/applicationContext.xml"});
解决方案四:
如果如你所说,那你能搜索到NodeletException这个类吗?
解决方案五:
检查发现你没有导入这个包ibatis-common。<dependency> <groupId>com.ibatis</groupId> <artifactId>ibatis-common</artifactId> <version>2.1.0.565</version> </dependency>
解决方案六:
<dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-core</artifactId> <version>3.0</version> </dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-ibatis</artifactId> <version>2.0.8</version> </dependency>看看有这两个包没有。