Я получаю исключение SSL Handshake при попытке запустить код в JDeveloper. Однако точно такой же код работает в среде IDE Netbeans.
Ошибка:
Причина: sun.security.validator.ValidatorException: Ошибка построения пути PKIX: sun. security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели
Я знаю, что ошибка возникает, скорее всего, когда в доверенном хранилище отсутствует соответствующий сертификат. Это не тот случай, так как я вижу сертификат, добавляемый в качестве доверенного сертификата после включения журналов javax.net.debug=ssl
. Кроме того, это не может быть простым случаем, когда сертификат недоступен, поскольку точно такой же код работает нормально на Netbeans с тем же складом доверенных сертификатов и версией java.
Код выглядит следующим образом:
package client;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import javax.ws.rs.client.Entity;
public class Class1 {
public Class1() {
super();
}
private static final String resourceUrl = "My/url";
public static void main(String[] args) {
Response headers = null;
System.out.println(System.getProperty("java.version"));
System.setProperty("javax.net.ssl.trustStore","C:\\path\\to\\jks");
System.setProperty("javax.net.ssl.trustStorePassword","passphrase");
System.setProperty("javax.net.debug","ssl");
try {
Client client = ClientBuilder.newClient();
String auth = "username:password";
byte[] authBytes = auth.getBytes(StandardCharsets.UTF_8);
String encodedAuth = Base64.getEncoder().encodeToString(authBytes);
String input = "JSON_input_payload";
headers = client
.target(resourceUrl)
.request()
.header("Authorization", "Basic " + encodedAuth)
.post(Entity.json(input));
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("Response = " + headers);
}
}
Есть идеи? Возможно, мне нужно проверить некоторые IDE-файлы конфигурации c? Не могу понять, что искать в конфигурационных файлах Jdev, поэтому разместил вопрос здесь.
Версия Netbeans 8.2
Версии JDev, на которых я это проверял, 12.2.1.3.0
и 12.2.1.4.0
ОС - Windows 10.
java.version
одинакова в обеих IDE, т. Е. 1.8.0_151
. Я также попытался запустить их в версии 1.8.0_221
, но получил те же результаты.