编译Spring Boot时提示java.net.UnknownHostException的解决方法

问题现象描述

编译Spring Boot过程中需要访问“self-signed.badssl.com”,提示“java.net.UnknownHostException”。

关键过程、根本原因分析

Host未建立映射关系,可以通过增加代理配置解决。

结论、解决方案及效果

  1. 打开ReactiveCloudFoundrySecurityService.java文件。

    vim ./spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundrySecurityService.java

  2. “i”进入编辑模式,修改文件中如下内容。

    1. 在第27行下面新增如下内容。
      import reactor.netty.tcp.ProxyProvider;

    2. 在第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.13128分别表示代理主机的IP地址和端口,操作时请需要根据实际代理环境配置。

    3. 修改第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.13128分别表示代理主机的IP地址和端口,操作时请需要根据实际代理环境配置。

      请使用:set list检查格式。不能出现空格,请使用Tab作为代码缩进。

  3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. 重新编译Spring Boot。