简体   繁体   中英

java.lang.ClassNotFoundException: org.springframework.core.convert.support.PropertyTypeDescriptor

When I am trying to start the application it throws an exception shown in stack trace. I'm using:

  • spring version 3.2.4.RELEASE
  • spring Transaction version 3.2.4.RELEASE
  • spring.security.version 3.0.5.RELEASE
  • hibernate.version 4.2.1.Final
  • JPA 1.0

I knew that PropertyTypeDescriptor is removed from spring. But I dont know how to handle this I'm stuck in this from last 2 days. Please suggest.

Stacktrace:

 2013-11-19 22:25:17 ERROR TestContextManager:324 - Caught exception
 while allowing TestExecutionListener
 [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@109cdd5]
 to prepare test instance
 [test.clickbuff.controller.TestUserController@893f08]
 java.lang.IllegalStateException: Failed to load ApplicationContext     at
 org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:308)
    at
 org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
    at
 org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
    at
 org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
    at
 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:220)   at
 org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:301)
    at
 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at
 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:303)
    at
 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
    at
 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)  at
 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)    at
 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)  at
 org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)    at
 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)   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:309)    at
 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
    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
 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor':
 Instantiation of bean failed; nested exception is
 java.lang.NoClassDefFoundError:
 org/springframework/core/convert/support/PropertyTypeDescriptor    at
 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965)
    at
 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911)
    at
 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
    at
 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at
 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at
 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at
 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at
 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at
 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:398)
    at
 org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:594)
    at
 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407)
    at
 org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84)
    at
 org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
    at
 org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:280)
    at
 org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:304)
    ... 24 more Caused by: java.lang.NoClassDefFoundError:
 org/springframework/core/convert/support/PropertyTypeDescriptor    at
 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:960)
    ... 38 more Caused by: java.lang.ClassNotFoundException:
 org.springframework.core.convert.support.PropertyTypeDescriptor    at
 java.net.URLClassLoader$1.run(URLClassLoader.java:366)     at
 java.net.URLClassLoader$1.run(URLClassLoader.java:355)     at
 java.security.AccessController.doPrivileged(Native Method)     at
 java.net.URLClassLoader.findClass(URLClassLoader.java:354)     at
 java.lang.ClassLoader.loadClass(ClassLoader.java:423)  at
 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)  at
 java.lang.

ClassLoader.loadClass(ClassLoader.java:356)     ... 39 more

Application context:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:task="http://www.springframework.org/schema/task" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    <import resource="application-config.xml" />
    <import resource="spring-database.xml" />
    <import resource="Spring-Mail.xml" />
    <import resource="spring-security.xml" />


    <!--Setting Context Annotation Driven -->
    <context:annotation-config />


    <!-- Controller's Base package -->
    <context:component-scan base-package="training.impetus.tp" />


    <!-- Scheduler Annotation Driven -->
    <task:annotation-driven />


    <!-- Spring MVC Annotation Driven -->
    <mvc:annotation-driven />


    <!-- Transaction Annotation Driven -->
    <tx:annotation-driven transaction-manager="transactionManager" />


    <!-- Resource mapping for static resources -->
    <mvc:resources mapping="/resources/**" location="/static/" />


    <!-- File upload Bean -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />


    <!-- Transaction Manager -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="dataSource" ref="dataSource" />
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>


    <!-- Assigning jobs to scheduler -->
    <bean id="schedulerJob" class="training.impetus.tp.scheduler.MailServiceJob"></bean>


    <!-- processes PersistenceUnit and PersistenceContext annotations -->
    <bean
        class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />


    <!-- View Mapping to MVC -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>


    <!-- Exceptions Mapping to MVC -->
    <bean
        class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="com.javabeat.ExampleException">
                    ExceptionPage
                </prop>
            </props>
        </property>
        <property name="defaultErrorView" value="error" />
    </bean>


    <!-- Message Resources -->
    <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>mymessages</value>
            </list>
        </property>
    </bean>

    <bean id="payCheckThread" class="training.impetus.tp.scheduler.PayCheckThread" scope="prototype"></bean>

</beans>

apploicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"  xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <context:annotation-config />

    <context:component-scan base-package="training.impetus.tp" />

    <context:component-scan base-package="training.impetus.tp.controller" />

    <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="jacksonMessageConverter" />
            </list>
        </property>
    </bean>

</beans>

Sprung database.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd         
                        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:annotation-config />

    <context:component-scan base-package="training.impetus.tp" />






    <context:property-placeholder location="classpath:datasource.properties" />

    <context:component-scan base-package="training.impetus.tp" />

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${user}" />
        <property name="password" value="${password}" />
    </bean>

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="true" />
                <property name="generateDdl" value="true" />
                <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
            </bean>
        </property>
        <property name="persistenceUnitName" value="default"></property>
        <property name="dataSource" ref="dataSource" />
    </bean>

</beans>


        <context:component-scan base-package="training.impetus.tp.controller" />

        <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="jacksonMessageConverter" />
            </list>
        </property>
    </bean>

</beans>

test case:

@ContextConfiguration(locations = {"classpath:mvc-config.xml"})
@TransactionConfiguration(defaultRollback = true)
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
public class TestUserController {

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testGetAllUsers() {
        fail("Not yet implemented");
    }

The spring.security.version 3.0.5.RELEASE depends on Spring core 3.0.3 release. This is why application context cannot load. Upgrade this to a later version.

You can verify this at https://mvnrepository.com/artifact/org.springframework.security/spring-security-core/3.0.5.RELEASE (Look for Compiler dependencies)

If you really need to use that class.

Try put that class in another jar so you can include in your classpath. Like is done with the RmiInvocationWrapper_Stub when you migrate from version 2.5.6 to 3.x.

You can find information in this docs of spring link

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM