Error:(226, 34) java: cannot find symbol symbol: variable BodyPublisher location: class jdk.incubator.http.HttpRequest
private static JSONObject sendRequest(JSONObject json) throws Exception {
HttpClient client;
InetSocketAddress proxy = getRandomProxy();
if (proxy == null) {
client = HttpClient.newHttpClient();
} else {
client = HttpClient.newBuilder().proxy(ProxySelector.of(proxy)).build();
}
HttpRequest httpRequest = HttpRequest
.newBuilder(new URI(BASE_URL))
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.timeout(TIMEOUT_DURATION)
.POST(HttpRequest.BodyPublisher.fromString(json.toString()))
.build();
HttpResponse<String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandler.asString());
String jsonResponse = httpResponse.body();
return new JSONObject(jsonResponse);
}
module-info.java:
module MyProject {
requires jdk.incubator.httpclient;
}
Я пробовал это с OpenJDK 10 и Oracle JDK 10 в Linux.
Я использую IntelliJ Idea 2017.3.2 с JDK 10 (readme: [hastebin.com/setuyexiqo.ini]. Например, для меня это не сработает: System.out.println(HttpRequest.BodyPublisher.fromString("Test").hashCode());




Вы можете проверить целевую версию байт-кода вашего модуля (Файл> Настройки> Сборка, выполнение, развертывание> Компилятор> Компилятор Java), она должна быть установлена на 10. Вы также можете проверить SDK проекта и настройки уровня языка в разделах Файл> Настройки проекта> Проект и Файл> Настройки проекта> Модули.
У меня отлично работает в модульном коде. Не могли бы вы поделиться воспроизводимым экземпляром или более подробной информацией о том, как вы выполняете код?