如何找到正确的 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 IO import POM 为您管理所有这些版本——它们确保它们保持同步。 你的意思是我应该在 Spring IO 中搜索和参考吗? 你可以试试 Spring data 1.9.2 ... 这适用于 Spring 4.2.4 org.springframework.dataspring-data- jpa1.9.2.RELEASE 尝试使用spring的物料清单 【参考方案1】:

查找版本兼容性的地方是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-duplicatedependency:treedependency: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 投影生成查询不正确

如何正确地在Spring Data JPA和Jackson中用上Java 8的时间相关API(即JSR 310也即java.time包下的众神器)

如何在 Spring Data 中漂亮地更新 JPA 实体?

spring-data-jpa 如何使用多个数据源? [复制]

带有 H2 和 data.sql 的 Spring Boot Data JPA - 未找到表