java - gradle 4.10 + java11 = spring(和许多其他库)的依赖版本检测问题

标签 java maven gradle build.gradle java-11

我正在从Java 8到11 + gradle 4.5-> 4.10.3的项目转换下工作,发现对我来说很奇怪。 gradle选择了错误的jar版本。例如一部分

gradle dependencies


\--- org.springframework.security:spring-security-web:5.1.3.RELEASE -> 4.2.2.RELEASE
    Line 407: |              +--- org.springframework:spring-beans:4.3.5.RELEASE -> 5.1.4.RELEASE (*)
    Line 408: |              +--- org.springframework:spring-context:4.3.5.RELEASE -> 5.1.4.RELEASE (*)
    Line 409: |              +--- org.springframework:spring-core:4.3.5.RELEASE -> 5.1.4.RELEASE (*)
    Line 410: |              +--- org.springframework:spring-expression:4.3.5.RELEASE -> 5.1.4.RELEASE (*)
    Line 411: |              \--- org.springframework:spring-web:4.3.5.RELEASE -> 5.1.4.RELEASE (*)
    Line 419: |    |    |    +--- com.fasterxml.jackson.core:jackson-databind:2.9.8 -> 2.8.7 (*)
    Line 420: |    |    |    +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.8 -> 2.8.7
    Line 423: |    |    |    +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.8 -> 2.8.7
    Line 427: |    |    |    \--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.8 -> 2.8.7
    Line 432: |    |    |    +--- org.apache.tomcat.embed:tomcat-embed-core:9.0.14 -> 8.5.11
    Line 433: |    |    |    +--- org.apache.tomcat.embed:tomcat-embed-el:9.0.14 -> 8.5.11
    Line 434: |    |    |    \--- org.apache.tomcat.embed:tomcat-embed-websocket:9.0.14 -> 8.5.11
    Line 437: |    |    |    +--- javax.validation:validation-api:2.0.1.Final -> 1.1.0.Final
    Line 438: |    |    |    +--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.3.0.Final

spring-security-web:5.1.3发布-> 4.2.2。发布!!!
tomcat-embed-core:9.0.14-> 8.5.11 !!!
tomcat-embed-el:9.0.14-> 8.5.11 !!!
org.apache.tomcat.embed:tomcat-embed-websocket:9.0.14-> 8.5.11 !!!
并且应用程序在运行时失败:
An attempt was made to call the method org.apache.coyote.AbstractProtocol.setAcceptCount(I)V but it does not exist. Its class, org.apache.coyote.AbstractProtocol, is available from the following locations:

 jar:file:/C:/yyyyyyyyyyyyyy/bin/java/TxVersionServer/lib/tomcat-embed-core-8.5.11.jar!/org/apache/coyote/AbstractProtocol.class

 It was loaded from the following location:

 file:/C:/Program%20Files/Dalet/DaletPlus/bin/java/TxVersionServer/lib/tomcat-embed-core-8.5.11.jar

这意味着gradle使用版本X进行编译,使用版本Y进行运行,为什么编译没有失败?该方法仅在版本9中存在。编译必须失败。我该如何避免呢?看起来我也需要在gradle中指定3d party依赖关系的版本,例如:A依赖于B,B依赖于C,并且我需要用A编写:A依赖于B而A依赖于C。这项工作,但是看起来非常非常错误的方式。在没有这种版本跃点的情况下如何解决依赖关系的任何想法。

最佳答案

此Gradle版本似乎不支持Java11。请参阅问题7835

您将必须升级到Gradle 5.0才能使用Java 11,请参阅release notes

有一些提及Gradle itself will run with Java 11,但不是针对自身构建的。看起来有些困惑,但是该发行版清楚地表明Java 11支持仅在Gradle 5.0+中附带

关于java - gradle 4.10 + java11 = spring(和许多其他库)的依赖版本检测问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55692667/

相关文章:

methods - 测试配置中的Gradle调用方法

android - 在 Android Studio 中链接外部库 (gradle)

java - 具有本地文件依赖的Maven项目构建错误501

java - 打印到系统和 PrintWriter

maven - 在 docker build 中安装 maven 会用 JAVA 7(!)覆盖 JAVA 8

java - 为什么当我使用 "mvn -v"时我的电脑中有两个java路径

gradle - JFrog Artifactory不显示依赖项声明

java - 使用 RESTlet 进行细粒度身份验证

java - 使用 @OneToMany 注释关系时是否可以定义 LEFT Join?

java - 如何选择maven依赖项:list?的输出