如何找到正确的 Spring Data JPA 和 Spring 版本的 jar 文件
Posted
技术标签:
【中文标题】如何找到正确的 Spring Data JPA 和 Spring 版本的 jar 文件【英文标题】:How to find correct jar file of Spring Data JPA and Spring version 【发布时间】:2017-08-17 18:50:03 【问题描述】:我正在使用 Spring MVC 和 Spring Data JPA 并面临 jar 版本的异常。
这是我的 pom:
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<hibernate.version>4.3.8.Final</hibernate.version>
<mysql.version>5.1.10</mysql.version>
<junit-version>4.11</junit-version>
<servlet-api-version>3.1.0</servlet-api-version>
<spring-security-version>4.0.4.RELEASE</spring-security-version>
<spring-data-solr.verion>1.2.0.RELEASE</spring-data-solr.verion>
<springbatch.version>3.0.6.RELEASE</springbatch.version>
<jsp-version>2.1</jsp-version>
<jstl-version>1.2</jstl-version>
<java.version>1.7</java.version>
<liquibase.version>3.1.1</liquibase.version>
<spring.data.jpa.version>1.10.3.RELEASE</spring.data.jpa.version>
<spring.social.version>1.1.0.RELEASE</spring.social.version>
</properties>
这是我的课:
import org.springframework.data.jpa.repository.JpaRepository;
public interface RoleRepository extends JpaRepository<Role, Long>
我在 Eclipse 上收到一条错误警告消息:
The type org.springframework.data.repository.query.QueryByExampleExecutor cannot be resolved. It is indirectly referenced from required .class files
似乎我的 Spring data jpa jar 版本不正确,但我不知道找到正确的版本。我的 Spring 版本:4.2.4.RELEASE 是最新的
如何解决这个错误?非常感谢!
【问题讨论】:
我建议使用 Spring IOimport
POM 为您管理所有这些版本——它们确保它们保持同步。
你的意思是我应该在 Spring IO 中搜索和参考吗?
你可以试试 Spring data 1.9.2 ... 这适用于 Spring 4.2.4 查找版本兼容性的地方是https://www.mvnrepository.com/您输入您的版本,它将显示相关的库及其版本。很酷的网站。它甚至会告诉你如何输入你的 POM。 对于您的 spring data jpa,我在搜索中输入了“Spring data jpa”,点击了库,然后点击了您的版本“1.10.3”。如果滚动到底部,它将显示相关的编译依赖项及其版本。
【讨论】:
【参考方案2】:既然你有一个 POM,这意味着你正在使用 Maven,并且 Maven 有一个名为依赖项的插件,你可以在其上调用 dependency:list
,它将列出你所有的 jar 依赖项及其版本。
只需在项目的根目录调用(假设您使用的是启动器):
./mvnw dependency:list
你会列出你的罐子:
[INFO] ------------------------------------------------------------------------
[INFO] Building XXXXXXX 0.0.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.10:list (default-cli) @ xxxxxxx ---
[INFO]
[INFO] The following files have been resolved:
[INFO] org.apache.lucene:lucene-backward-codecs:jar:5.5.2:compile
[INFO] org.springframework.boot:spring-boot-starter-jdbc:jar:1.5.1.RELEASE:compile
您还可以使用dependency:analyze-duplicate
、dependency:tree
或dependency:analyze-report
来检查所有内容是否已声明一次。查看documentation 获取此插件,当您遇到依赖问题时,它非常有用。
这是一个依赖的示例:树:
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ ouaknine ---
[INFO] com.rdlopes.ouaknine:ouaknine:war:0.0.2-SNAPSHOT
[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.8.6:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.6:compile
[INFO] | +- com.fasterxml.jackson.core:jackson-core:jar:2.8.6:compile
[INFO] | \- javax.transaction:jta:jar:1.1:compile
[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype-hppc:jar:2.8.6:compile
[INFO] | \- com.carrotsearch:hppc:jar:0.7.1:compile
[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype-json-org:jar:2.8.6:compile
[INFO] | \- org.apache.geronimo.bundles:json:jar:20090211_1:compile
[INFO] +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.8.6:compile
[INFO] | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.0:compile
[INFO] +- com.h2database:h2:jar:1.4.193:compile
[INFO] +- com.jayway.jsonpath:json-path:jar:2.2.0:test
[INFO] | +- net.minidev:json-smart:jar:2.2.1:test
[INFO] | | \- net.minidev:accessors-smart:jar:1.1:test
[INFO] | | \- org.ow2.asm:asm:jar:5.0.3:test
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.22:compile
[INFO] +- com.jcraft:jzlib:jar:1.1.3:compile
[INFO] +- com.mattbertolini:liquibase-slf4j:jar:2.0.0:compile
[INFO] +- com.ryantenney.metrics:metrics-spring:jar:3.1.3:compile
[INFO] | +- io.dropwizard.metrics:metrics-healthchecks:jar:3.1.2:compile
[INFO] | +- org.springframework:spring-core:jar:4.3.6.RELEASE:compile
[INFO] | +- org.springframework:spring-beans:jar:4.3.6.RELEASE:compile
[INFO] | \- org.springframework:spring-aop:jar:4.3.6.RELEASE:compile
[INFO] +- com.zaxxer:HikariCP:jar:2.6.0:compile
[INFO] +- commons-io:commons-io:jar:2.5:compile
[INFO] +- io.dropwizard.metrics:metrics-annotation:jar:3.1.2:compile
[INFO] +- io.dropwizard.metrics:metrics-core:jar:3.1.2:compile
[INFO] +- io.dropwizard.metrics:metrics-json:jar:3.1.2:compile
在我的 MacBook Pro 上,我只需在终端中调用:
macbook-pro-de-rui:ouaknine rui$ ./mvnw dependency:list | grep jpa
[INFO] org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] org.springframework.data:spring-data-jpa:jar:1.11.0.RELEASE:compile
[INFO] org.springframework.boot:spring-boot-starter-data-jpa:jar:1.5.1.RELEASE:compile
【讨论】:
很酷 ^^ 我试过了,我可以使用 Spring data jpa 1.9.2 版本。我想从现在开始我不会担心问题和冲突 jar,谢谢@rdlopes 真为你高兴,我以前有时拉头发,不知道有这个插件^^ 仅供参考: 如果你只做依赖org.springframework.boot:spring-boot-starter-data-jpa:1.5.1.RELEASE:compile
,你最终会得到spring-data-commons-1.13.0.RELEASE.jar
(在许多其他罐子中),QueryByExampleExecutor
接口可以找到。以上是关于如何找到正确的 Spring Data JPA 和 Spring 版本的 jar 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring data jpa 中正确使用 findBySomeOtherId 而不是 findById?
如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)
如何在 Spring Data 中漂亮地更新 JPA 实体?