spring实例化对象异常?

Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.sohu.smc.wechat.applet.service.impl.NewsServiceImpl.<init>(NewsServiceImpl.java:41)
    at com.sohu.smc.wechat.applet.service.ServiceFactory.<clinit>(ServiceFactory.java:18)
    at com.sohu.smc.wechat.applet.helper.NewsArticleHelper.<init>(NewsArticleHelper.java:39)
    at com.sohu.smc.wechat.applet.controller.NewsArticleController.<clinit>(NewsArticleController.java:27)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at com.sohu.smc.common.http.server.DefaultProxyFactory.getObject(DefaultProxyFactory.java:17)
    at com.sohu.smc.common.http.server.Configuration.build(Configuration.java:60)
    at com.sohu.smc.wechat.applet.server.WechatAppletServer.main(WechatAppletServer.java:39)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cmsDataSource' defined in class path resource [dao-beans.xml]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1038)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:984)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:633)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.sohu.smc.api.news.factory.NewsDaoFactory.init(NewsDaoFactory.java:19)
    at com.sohu.smc.api.news.factory.NewsDaoFactory.<clinit>(NewsDaoFactory.java:15)
    ... 12 more
Caused by: java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.log4j.Log4jLoggerFactory.<clinit>(Log4jLoggerFactory.java:44)
    at org.apache.log4j.Logger.getLogger(Logger.java:40)
    at org.apache.log4j.Logger.getLogger(Logger.java:48)
    at com.mchange.v2.log.log4j.Log4jMLog.getMLogger(Log4jMLog.java:51)
    at com.mchange.v2.log.MLog.getLogger(MLog.java:145)
    at com.mchange.v2.log.MLog.<clinit>(MLog.java:72)
    at com.mchange.v2.naming.JavaBeanReferenceMaker.<clinit>(JavaBeanReferenceMaker.java:39)
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<clinit>(PoolBackedDataSourceBase.java:203)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1031)
    ... 26 more
Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.
    at org.slf4j.impl.Log4jLoggerFactory.<clinit>(Log4jLoggerFactory.java:54)
    ... 43 more
    <bean id="cmsDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.connection.driver_class}"/>
        <property name="jdbcUrl" value="${jdbc.connection.url}"/>
        <property name="user" value="${jdbc.connection.username}"/>
        <property name="password" value="${jdbc.connection.password}"/>
        <property name="minPoolSize" value="1"></property>
        <property name="maxPoolSize" value="10"></property>
        <property name="initialPoolSize" value="1"></property>
        <property name="maxIdleTime" value="60"></property>
        <property name="acquireIncrement" value="2"></property>
        <property name="maxStatements" value="0"></property>
        <property name="idleConnectionTestPeriod" value="60"></property>
        <property name="acquireRetryAttempts" value="30"></property>
        <property name="breakAfterAcquireFailure" value="false"></property>
        <property name="testConnectionOnCheckout" value="false"></property>
    </bean>

clipboard.png

阅读 4.5k
3 个回答

你的dao-beans.xml是不是少了读数据源的配置文件的标签。
比如${jdbc.connection.driver_class}这个不得从一个properties文件读出来吗?

Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.

检测到classpath里存在log4j-over-slf4j.jarslf4j-log4j12.jar俩个jar包,然后就StackOverflowError了 你看一下maven配置,删除一个jar包就好了

至少只看出一个 jar 冲突

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题