刚接触compass,按别人的例子配置了一下,出现了问题java.lang.NoSuchFieldException: sessionEventListenerConfig这是缺少哪什么文件,是需要加入什么包吗?

解决方案 »

  1.   

    错误是这样的
    Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compassGps' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Initialization of bean failed; nested exception is org.compass.gps.device.hibernate.HibernateGpsDeviceException: {hibernateDevice}: Failed to inject compass gps device events into hibernate 3.0 session factory [org.hibernate.impl.SessionFactoryImpl]; nested exception is java.lang.NoSuchFieldException: sessionEventListenerConfig
    org.compass.gps.device.hibernate.HibernateGpsDeviceException: {hibernateDevice}: Failed to inject compass gps device events into hibernate 3.0 session factory [org.hibernate.impl.SessionFactoryImpl]; nested exception is java.lang.NoSuchFieldException: sessionEventListenerConfig
    java.lang.NoSuchFieldException: sessionEventListenerConfig
    at java.lang.Class.getDeclaredField(Unknown Source)
    at org.compass.core.util.FieldInvoker.prepare(FieldInvoker.java:46)
    at org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice.registerEventsForHibernate30(Hibernate3GpsDevice.java:497)
    at org.compass.gps.device.hibernate.dep.Hibernate3GpsDevice.doStart(Hibernate3GpsDevice.java:366)
    at org.compass.gps.device.AbstractGpsDevice.start(AbstractGpsDevice.java:125)
    at org.compass.gps.device.support.parallel.AbstractParallelGpsDevice.start(AbstractParallelGpsDevice.java:73)
    at org.compass.gps.impl.AbstractCompassGps.start(AbstractCompassGps.java:166)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1133)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1095)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:396)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:283)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
    at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
      

  2.   

    spring中的配置
    <!-- compass -->
    <bean id="annotationConfiguration"
    class="org.compass.annotations.config.CompassAnnotationsConfiguration" />
    <bean id="compass" class="org.compass.spring.LocalCompassBean">
    <property name="classMappings">
    <list>
    <value>org.ssh.mobilefarm.vo.TArticle</value>
    </list>
    </property>
    <property name="compassConfiguration"
    ref="annotationConfiguration" />
    <property name="compassSettings">
    <props>
    <prop key="compass.engine.connection">
    file://mobilefarm/compass
    </prop>
    <prop key="compass.transaction.factory">
    org.compass.spring.transaction.SpringSyncTransactionFactory
    </prop>
    </props>
    </property>
    <property name="transactionManager" ref="transactionManager" />
    </bean>
    <bean id="compassTemplate"
    class="org.compass.core.CompassTemplate">
    <property name="compass" ref="compass" />
    </bean>
    <!-- Compass中建立索引与mirror database change的部件 -->
    <bean id="hibernateGpsDevice"
    class="org.compass.spring.device.hibernate.dep.SpringHibernate3GpsDevice">
    <property name="name" value="hibernateDevice" />
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps"
    init-method="start" destroy-method="stop">
    <property name="compass" ref="compass" />
    <property name="gpsDevices">
    <list>
    <ref local="hibernateGpsDevice"/>
    </list>
    </property>
    </bean>
    就是在配置gpsDevices时出错,去掉便不报错
      

  3.   

    今天查了一下,好象是hibernate的问题,sessionEventListenerConfig如何配置啊!
      

  4.   

    <prop key="compass.engine.connection">
                        file://mobilefarm/compass  </prop>
    中的路径到底指的是什么啊