gradle 4.10 + java11 = проблема определения версии зависимости с пружиной (и многими другими библиотеками) - PullRequest
0 голосов
/ 15 апреля 2019

Я работаю над преобразованием проекта из java 8 в 11 + gradle 4.5 -> 4.10.3 и нашел для меня очень странную вещь.Gradle принять неправильные версии банку.например часть

зависимостей gradle

\--- 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.RELEASE -> 4.2.2.RELEASE !!!
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, например: A зависит от B, B зависит от C, и мне нужно написать на A: A зависит от B и A зависит от C. Я проверил это иэто работа, но это выглядит очень и очень неправильно.любые идеи, как разрешить зависимости без таких прыжков версии.

1 Ответ

0 голосов
/ 15 апреля 2019

Похоже, что эта версия Gradle не поддерживает Java 11. См. Выпуск 7835

Для использования Java 11 вам придется перейти на Gradle 5.0, см. примечания к выпуску .

Есть некоторые упоминания о том, что Сам Gradle будет работать с Java 11 , но не для самих сборок.Это выглядит немного запутанно, но в релизе отмечается, что поддержка Java 11 поставляется только с Gradle 5.0 +

...