Skip to content

Commit ded4365

Browse files
committed
Initialize ResolverConfigurationImpl at runtime on Windows
to prevent NullPointerException from occurring during runtime
1 parent ff5ecc8 commit ded4365

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/jdk/JNIRegistrationJavaNet.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ public void duringSetup(DuringSetupAccess a) {
6868
/* Caches the default interface. */
6969
initializeAtRunTime(a, "java.net.DefaultInterface");
7070
}
71+
if (isWindows()) {
72+
initializeAtRunTime(a, "sun.net.dns.ResolverConfigurationImpl");
73+
}
7174
}
7275

7376
@Override
@@ -102,6 +105,11 @@ public void beforeAnalysis(BeforeAnalysisAccess a) {
102105
}
103106

104107
a.registerReachabilityHandler(JNIRegistrationJavaNet::registerDefaultProxySelectorInit, method(a, "sun.net.spi.DefaultProxySelector", "init"));
108+
109+
if (isWindows()) {
110+
a.registerReachabilityHandler(JNIRegistrationJavaNet::registerResolverConfigurationImplInit0,
111+
method(a, "sun.net.dns.ResolverConfigurationImpl", "init0"));
112+
}
105113
}
106114

107115
static void registerInitInetAddressIDs(DuringAnalysisAccess a) {
@@ -166,4 +174,8 @@ private static void registerDefaultProxySelectorInit(DuringAnalysisAccess a) {
166174

167175
RuntimeJNIAccess.register(method(a, "java.net.InetSocketAddress", "createUnresolved", String.class, int.class));
168176
}
177+
178+
private static void registerResolverConfigurationImplInit0(DuringAnalysisAccess a) {
179+
RuntimeJNIAccess.register(fields(a, "sun.net.dns.ResolverConfigurationImpl", "os_searchlist", "os_nameservers"));
180+
}
169181
}

0 commit comments

Comments
 (0)