WebClient не разрешается - PullRequest
2 голосов
/ 20 июня 2020

Чтобы использовать новый WebClient API, я включил spring-webflux в свой проект Intellij.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compile 'org.springframework.boot:spring-boot-starter-webflux'
//    compile group: 'org.springframework', name: 'spring-webflux', version: '5.2.7.RELEASE'

    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

Однако WebClient остается нерешенным:

C:\Users\tobia\Documents\spring-app\service\Service.java:25: error: cannot find symbol
        System.out.println(WebClient.Builder());
                           ^
  symbol:   variable WebClient
  location: class Service

Сама зависимость, похоже, решена, поскольку webflux теперь находится в моем списке «внешних библиотек»:

enter image description here


Есть кто-нибудь знает, почему WebClient остается неразрешенным?


Я пробовал все 4 из этих отклонений зависимостей, и ни один не работал:

    compile 'org.springframework.boot:spring-boot-starter-webflux'
    compile group: 'org.springframework', name: 'spring-webflux', version: '5.2.7.RELEASE'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    implementation group: 'org.springframework', name: 'spring-webflux', version: '5.2.7.RELEASE'

1 Ответ

1 голос
/ 20 июня 2020

В вашем build.gradle отсутствует эта зависимость:

compile group: 'org.springframework', name: 'spring-webflux', version: '5.2.7.RELEASE'

Подтверждение работы:

WebClient

Убедитесь, что повторно импортировать зависимости .

Пример кода для WebClient должен выглядеть так:

        WebClient client3 = WebClient
                .builder()
                .baseUrl("http://localhost:8080")
                .defaultCookie("cookieKey", "cookieValue")
                .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                .defaultUriVariables(Collections.singletonMap("url", "http://localhost:8080"))
                .build();

Обратите внимание, что это WebClient.builder(), а не WebClient.Builder(), это выглядит например, у вас есть опечатка в имени метода, замените Builder() на builder(), и он должен работать.

WebClient.Builder - это интерфейс, поэтому этот код недействителен:

System.out.println(WebClient.Builder());

Это синтаксическая проблема с вашим кодом , которая не имеет ничего общего с Gradle, зависимостями или IntelliJ IDEA.

...