如何在jdk 9、10和11中使用Java配置DNS服务器

时间:2019-03-31 23:30:27

标签: java dns java-9 java-11

为了进行测试,我们有一个DNS服务器,该服务器将响应虚拟记录。以前,我们可以通过以下方式使java使用我们的DNS服务器(此处仅使用本地主机):

"-Dsun.net.spi.nameservice.nameservers=127.0.0.1",
"-Dsun.net.spi.nameservice.provider.1=dns,sun",

这在jdk11下不再起作用。 是否可以指定在jdk11下使用的DNS服务器?如果可以,怎么办?

编辑: 我也尝试过:

-Djava.naming.provider.url=dns://127.0.0.1

来自https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/jdk.naming.dns/share/classes/com/sun/jndi/dns/DnsContextFactory.java,但这也不起作用。

1 个答案:

答案 0 :(得分:1)

已经不支持定义备用DNS服务器:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8134577

为了进行测试,您应该使用可以由-Djdk.net.hosts.file=path_to_alternative_hosts_file JVM选项定义的替代主机文件。

例如,如果您在D:\test\hosts上有一个包含以下内容的文件

10.20.30.40        google.com www.google.com

使用-Djdk.net.hosts.file=D://test/hosts

运行此代码
    public static void main(String[] args) throws UnknownHostException {
        InetAddress address = InetAddress.getByName("google.com");
        System.out.println(address);
    }

将打印:

google.com/10.20.30.40