1

我在 Spring 引导应用程序 (1.2.7) 中使用 Spring Data Solr。现在,由于自定义存储库的 Spring Data Solr Precedence,我必须至少将 Spring Data Solr 更新到 1.4.x,而它目前在 1.3.x 上。

但是,如果我明确添加以下依赖项:

<dependency>
   <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-solr</artifactId>
    <version>1.4.2.RELEASE</version>
</dependency>

我运行应用程序,我得到以下异常:

Caused by: java.lang.NoClassDefFoundError: org/springframework/data/mapping/PersistentPropertyAccessor
    at org.springframework.data.solr.core.SolrTemplate.getDefaultSolrConverter(SolrTemplate.java:573)
    at org.springframework.data.solr.core.SolrTemplate.afterPropertiesSet(SolrTemplate.java:622)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
    ... 61 more
Caused by: java.lang.ClassNotFoundException: org.springframework.data.mapping.PersistentPropertyAccessor
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 65 more

我知道您通常应该信任 Spring boot 本身的依赖管理,但这意味着您无法使用标准将括号括在 Solr 查询的部分周围,这非常关键。

4

1 回答 1

2

Spring Data 作为一组模块发布,所有模块都设计为协同工作。通过仅升级spring-data-solr,您试图让它与旧版本的所有 Spring Data 依赖项一起工作。我建议您升级所有 Spring Data,以便获得一组一致的版本。

Spring Data Fowler 发布系列包含 Spring Data Solr 1.4.x,SR2 包含 Spring Data Solr 1.4.2。假设您spring-boot-starter-parent用作 pom 的父级,您可以通过覆盖spring-data-releasetrain.version属性来使用此版本:

<properties>
    <spring-data-releasetrain.version>Fowler-SR2</<spring-data-releasetrain.version>
</properties>
于 2016-01-22T15:09:50.863 回答