编译Spring Boot时提示java.net.UnknownHostException的解决方法
问题现象描述
编译Spring Boot过程中需要访问“self-signed.badssl.com”,提示“java.net.UnknownHostException”。
关键过程、根本原因分析
Host未建立映射关系,可以通过增加代理配置解决。
结论、解决方案及效果
- 打开ReactiveCloudFoundrySecurityService.java文件。
vim ./spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundrySecurityService.java
- 按“i”进入编辑模式,修改文件中如下内容。
- 在第27行下面新增如下内容。
import reactor.netty.tcp.ProxyProvider;
- 在第64行插入如下代码。
else { HttpClient client = HttpClient.create().tcpConfiguration(tcpClient -> { tcpClient = tcpClient.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP).host("127.0.0.1") .port(3128).nonProxyHosts("localhost|my*.com").build()); return tcpClient; }); webClientBuilder.clientConnector(new ReactorClientHttpConnector(client)); }
其中,127.0.0.1和3128分别表示代理主机的IP地址和端口,操作时请需要根据实际代理环境配置。
- 修改第77行为如下代码。
HttpClient client = HttpClient.create().tcpConfiguration(tcpClient -> { tcpClient = tcpClient.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP).host("127.0.0.1").port(3128) .nonProxyHosts("localhost|my*.com").build()); return tcpClient; }).secure((sslContextSpec) -> sslContextSpec.sslContext(createSslContext())); return new ReactorClientHttpConnector(client);
其中,127.0.0.1和3128分别表示代理主机的IP地址和端口,操作时请需要根据实际代理环境配置。
请使用:set list检查格式。不能出现空格,请使用Tab作为代码缩进。
- 在第27行下面新增如下内容。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 重新编译Spring Boot。
父主题: 故障排除