java.lang.ClassCastException:org.apache.xerces.parsers.SAXParser无法强制转换为org.xml.sax.XMLReader Hibernate

时间:2013-03-11 15:27:15

标签: spring hibernate orm xml-parsing orchestra

我正在使用Hibernate JPA / spring开展一个项目。

它抛出以下异常。在做了一些阅读之后,我从依赖项中删除了所有xml-apis,但是它会抛出相同的错误。任何想法??

java.lang.ClassCastException: org.apache.xerces.parsers.SAXParser cannot be cast to org.xml.sax.XMLReader
    at org.xml.sax.helpers.XMLReaderFactory.loadClass(XMLReaderFactory.java:199)
    at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReaderFactory.java:150)
    at org.dom4j.io.SAXHelper.createXMLReader(SAXHelper.java:83)
    at org.dom4j.io.SAXReader.createXMLReader(SAXReader.java:894)
    at org.dom4j.io.SAXReader.getXMLReader(SAXReader.java:715)
    at org.dom4j.io.SAXReader.setFeature(SAXReader.java:218)
    at org.hibernate.internal.util.xml.MappingReader.setValidationFor(MappingReader.java:114)
    at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:77)
    at org.hibernate.cfg.Configuration.add(Configuration.java:478)
    at org.hibernate.cfg.Configuration.add(Configuration.java:474)
    at org.hibernate.cfg.Configuration.add(Configuration.java:647)
    at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:685)
    at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1248)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1048)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:693)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)

当我试图在jetty web服务器中初始化web上下文时,它抛出了上述异常。[Spring(3.0.6.Release)& hibernate(4.1.10.final)]

<?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:util="http://www.springframework.org/schema/util"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:p="http://www.springframework.org/schema/p"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<import resource="classpath*:/META-INF/spring-orchestra-init.xml"/>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
        </bean>

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

<tx:annotation-driven transaction-manager="transactionManager"/>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"    
      p:persistenceUnitName="persistenceUnit">
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true"/>
            <property name="generateDdl" value="false"/>
        </bean>
    </property>
    <property name="loadTimeWeaver">
        <bean class="org.faces.controller.jpa.JpaLoadTimeWeaver"/>
    </property>

</bean>

<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
    <property name="scopes">
        <map>
            <entry key="conversation.access">
                <bean class="org.apache.myfaces.orchestra.conversation.spring.SpringConversationScope">
                    <property name="advices">
                        <list>
                            <ref bean="persistentContextConversationInterceptor" />
                        </list>
                    </property>
                </bean>
            </entry>
        </map>
    </property>
</bean>

<bean id="jpaPersistentContextFactory" class="org.apache.myfaces.orchestra.conversation.spring.JpaPersistenceContextFactory">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="persistentContextConversationInterceptor" class="org.apache.myfaces.orchestra.conversation.spring.PersistenceContextConversationInterceptor">
    <property name="persistenceContextFactory" ref="jpaPersistentContextFactory" />
</bean>

<bean name="org.apache.myfaces.orchestra.conversation.AccessScopeManagerConfiguration"
      class="org.apache.myfaces.orchestra.conversation.AccessScopeManagerConfiguration"
      scope="singleton" lazy-init="true">

    <property name="ignoreViewIds">
        <set>
            <value>/__ADFv__.xhtml</value>
        </set>
    </property>
</bean>
<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@rum:1541:CHEZTST" />
    <property name="username" value="username" />
    <property name="password" value="password" />
</bean>

1 个答案:

答案 0 :(得分:0)

删除loadtimeweaver属性后,它工作正常。

<property name="loadTimeWeaver">
<bean class="org.faces.controller.jpa.JpaLoadTimeWeaver"/> </property>

这是一个链接,表明虽然它已经很老了但它可以运作

https://jira.springsource.org/browse/SPR-2596