我在Spring启动应用程序(1.2.7)中使用Spring Data Solr。现在,因为Spring Data Solr Precedence for Custom Repository我必须至少将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启动本身的依赖关系管理,但这意味着您无法使用条件在Solr查询的某些部分放置括号,这非常关键。
答案 0 :(得分: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>