2012-05-25 4 views
6

依存性注入を処理するためにスプリングを使用してサンドボックスを作成しようとしています。私のサンドボックスはいくつかのドメインクラスであり、その中にmain(String[] args)メソッドを持つMainClassもあります。 @Componentと私のTestClassに注釈を付けるには一緒に配線するspring-data-neo4jスタンドアロンスプリングプロジェクト

と、それはそれで

@Autowired 
private Neo4jTemplate neo4jTemplate; 

が含まれています。私main方法で

、私はで構成されて私のapplicationContext.xmlファイル、上ClassPathXmlApplicationContextを呼び出す:

<context:annotation-config/> 
<context:spring-configured/> 
<context:component-scan base-package="org.neuralsandbox"/> 

<neo4j:config storeDirectory="data/sandbox.db"/> 

が、私のプログラムは、大規模なスタックトレースで、私は私のClassPathXmlApplicationContextを宣言し、ここでラインで実行に失敗しました最初と最後のスローブを印刷します。

まず:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testClass': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.data.neo4j.support.Neo4jTemplate org.neuralsandbox.TestClass.neo4jTemplate; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'neo4jTemplate' defined in class org.springframework.data.neo4j.config.Neo4jConfiguration: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public final org.springframework.data.neo4j.support.Neo4jTemplate org.springframework.data.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$a3874640.neo4jTemplate() throws java.lang.Exception] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mappingInfrastructure' defined in class org.springframework.data.neo4j.config.Neo4jConfiguration: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public final org.springframework.data.neo4j.support.MappingInfrastructure org.springframework.data.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$a3874640.mappingInfrastructure() throws java.lang.Exception] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'neo4jTransactionManager' defined in class org.springframework.data.neo4j.config.Neo4jConfiguration: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public final org.springframework.transaction.PlatformTransactionManager org.springframework.data.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$a3874640.neo4jTransactionManager()] threw exception; nested exception is java.lang.NoSuchMethodError: org.neo4j.kernel.impl.transaction.UserTransactionImpl.<init>(Lorg/neo4j/graphdb/GraphDatabaseService;)V 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1073) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:516) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at org.neuralsandbox.MainClass.main(MainClass.java:8) 

最終:

Caused by: java.lang.NoSuchMethodError: org.neo4j.kernel.impl.transaction.UserTransactionImpl.<init>(Lorg/neo4j/graphdb/GraphDatabaseService;)V 
    at org.springframework.data.neo4j.config.Neo4jConfiguration.createJtaTransactionManager(Neo4jConfiguration.java:240) 
    at org.springframework.data.neo4j.config.Neo4jConfiguration.neo4jTransactionManager(Neo4jConfiguration.java:232) 
    at org.springframework.data.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$a3874640.CGLIB$neo4jTransactionManager$21(<generated>) 
    at org.springframework.data.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$a3874640$$FastClassByCGLIB$$ed4fda1e.invoke(<generated>) 
    at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:210) 
    at org.springframework.data.neo4j.config.Neo4jConfiguration$$EnhancerByCGLIB$$a3874640.neo4jTransactionManager(<generated>) 
    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.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:145) 
    ... 72 more 

私はのNeo4j 1.7と春・データのNeo4j 2.0.0.RELEASEだけでなく、春の3.1.0.RELEASEを使用しています。

spring-data-neo4jで提供されているチュートリアルを使用して、なぜこの例外がスローされるのかについてはわかりませんでした。誰も助けることができますか?

答えて

6

これは私が使用していたspring-data-neo4jとneo4jの組み合わせの問題であることがわかりました。春・データのNeo4j 2.0.1.RELEASEで

Neo4jConfigurationSpringTransactionManagerAbstractGraphDatabaseクラスで取るUserTransactionImplを使用しようとしている、とSpringTransactionManager 1.7のNeo4jにそれを取る、とのNeo4j 1.8.M01ではありません、UserTransactionImplのdoesnそれを取らない。

したがって、現在の解像度は、neo4j 1.6.2とspring-data-neo4j 2.0.1.RELEASEを使用することです。

+0

ニュースはありますか?今すぐアップグレードできますか? – myborobudur

+0

私はしばらくチェックインしていませんが、spring-data-neo4jはまだ2.0.1リリースですので、この問題は解決されていないと思います。 – Nicholas

+1

私はまったく同じ問題を抱えていますが、私はspring-data-neo4j 2.2.0を使用しています.Mavenがneo4j 1.8.1をもたらすものです。私はそれを別に宣言する必要はありません。 Mavenを使って依存関係を描画していますか?最新のリリースの運があれば? – occasl