Ошибка создания компонента репозитория с помощью Spring

Я установил Neo4j-Kernel 1.9M04 и Spring-Data-Neo4j 2.1.0 RELEASE.

Точнее, вот мои зависимости (из моего файла SBT):

    "org.springframework" % "spring-aop" % "3.2.0.RELEASE",
    "org.springframework" % "spring-aspects" % "3.2.0.RELEASE",
    "org.springframework" % "spring-beans" % "3.2.0.RELEASE",
    "org.springframework.data" % "spring-data-commons-core" % "1.4.0.RELEASE",
    "org.springframework" % "spring-expression" % "3.2.0.RELEASE",
    "org.springframework" % "spring-jdbc" % "3.2.0.RELEASE",
    "org.springframework" % "spring-orm" % "3.2.0.RELEASE",
    "org.springframework" % "spring-test" % "3.2.0.RELEASE",
    "org.springframework" % "spring-tx" % "3.2.0.RELEASE",
    "org.springframework.data" % "spring-data-neo4j" % "2.1.0.RELEASE" excludeAll(
      ExclusionRule(organization = "com.sun.jdmk"),
      ExclusionRule(organization = "com.sun.jmx"),
      ExclusionRule(organization = "javax.jms")
      ),
    "org.neo4j" % "neo4j" % "1.9.M04",
    "org.neo4j" % "neo4j-kernel" % "1.9.M04" % "test" classifier "tests" classifier "",
    "asm" % "asm-all" % "3.1",
    "org.specs2" %% "specs2" % "1.13" % "test" withSources(),
    "org.springframework.data" % "spring-data-neo4j-rest" % "2.1.0.RELEASE"

Во время выполнения, пытаясь автоматически подключить репозиторий neo4j, у меня есть этот стек:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.data.neo4j.config.Neo4jConfiguration#0': Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/neo4j/kernel/impl/core/LockReleaser
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:532) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
Caused by: java.lang.NoClassDefFoundError: org/neo4j/kernel/impl/core/LockReleaser
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.7.0_07]
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442) ~[na:1.7.0_07]
    at java.lang.Class.getDeclaredMethods(Class.java:1808) ~[na:1.7.0_07]
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:384) ~[spring-orm-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:322) ~[spring-orm-3.2.0.RELEASE.jar:3.2.0.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:844) ~[spring-beans-3.2.0.RELEASE.jar:3.2.0.RELEASE]
Caused by: java.lang.ClassNotFoundException: org.neo4j.kernel.impl.core.LockReleaser
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) ~[na:1.7.0_07]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_07]
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_07]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0_07]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ~[na:1.7.0_07]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ~[na:1.7.0_07]

Я заметил, что класс org/neo4j/kernel/impl/core/LockReleaser исчез из Neo4J 1.9M0X.

Похоже, ошибка выдает от "org.springframework.data" % "spring-data-neo4j-rest" % "2.1.0.RELEASE"

Как я могу это исправить?


person Mik378    schedule 28.01.2013    source источник


Ответы (1)


Похоже, что spring-orm был создан для версии neo4j, отличной от той, которую вы пытаетесь использовать во время выполнения (они несовместимы).

Возможные решения:

  • Используйте более старую версию neo4j.
  • Создайте spring-orm самостоятельно в соответствии с текущей версией neo4j. Скорее всего, вам придется мигрировать spring-orm самостоятельно.
person Jakozaur    schedule 28.01.2013
comment
Я не могу использовать более старую версию Neo4j, так как scala 2.10 несовместима с версией neo4j старше 1.9M04.. - person Mik378; 28.01.2013
comment
Похоже, что Spring-Data-Neo4j 3.2.0.RELEASE не полностью поддерживает версию Neo4j 1.9.X. Лучшее решение сохранить Scala 2.10 в качестве основного языка — не использовать Spring Data и вернуться к традиционным API-интерфейсам Neo4j. - person Mik378; 30.01.2013