2

刚开始在启动服务器时出现以下异常:

Error creating bean with name 'myRepository': Invocation of init method failed;  nested exception is java.lang.NoClassDefFoundError: org/springframework/data/mapping/context/InvalidPersistentPropertyPath: org.springframework.data.mapping.context.InvalidPersistentPropertyPath

哪些更改可能导致此异常?

谢谢。

4

2 回答 2

5

我正在使用 Gradle,并且遇到了完全相同的问题。

InvalidPersistentPropertyPath似乎已在spring-data-commons(1.11.0.BUILD-SNAPSHOT) 的最新 SNAPSHOT 版本中引入。我的项目还包括 Spring Data JPA,它依赖于更稳定的版本 (1.11.0.M1)。Gradle 进行了一些冲突解决并使用了 M1 库,该库没有新类并导致NoClassDefFoundError.

目前,我正在通过告诉 Gradle 忽略spring-data-commons作为 JPA 的传递依赖项来解决此问题,以便使用 SNAPSHOT 构建作为 SDN 的传递依赖项被拉入:

compile("org.springframework.data:spring-data-jpa:$springDataJpaVersion") {
  exclude group: "org.springframework.data", module: "spring-data-commons"
}

如果您使用的是 Gradle,则可以使用以下方法检查冲突:

./gradlew <project>:dependencies

我认为检查每个项目的发布时间表是值得的,但这种解决方法不允许我们继续构建。

于 2015-07-14T20:28:28.387 回答
0

我正在使用 Maven,带有 Spring Boot 1.3.0.M1、spring-data-neo4j 4.0.0.BUILD-SNAPSHOT 和 neo4j 2.2.2。

正如 simonl 建议的那样,用 1.11.0.BUILD-SNAPSHOT 覆盖 spring-data-commons 1.11.0.M1 解决了这个问题。

<!-- Fix ClassNotFoundException: org.springframework.data.mapping.PersistentPropertyAccessor -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
    <version>1.11.0.BUILD-SNAPSHOT</version>
</dependency>

我记得过去在使用带有 SDN 3 的较新版本的 Neo4j 时必须这样做,但直到现在才需要使用 SDN 4 覆盖 spring-data-commons。

于 2015-07-15T19:09:55.870 回答