无法在 Wildfly 上加载 class sun.net.dns.ResolverConfiguration (JBOSS)

Can't load class sun.net.dns.ResolverConfiguration on Wildfly (JBOSS)

下面的 Java 代码在基本 Main class 示例中运行良好。太棒了!

但是,当它部署在 Wildfly (10.0.0) 应用程序服务器上时,找不到提到的 class 并抛出异常。 我已经在另一个应用程序服务器上测试过,例如 IBM Websphere Application(8.0 和 9.0),它也可以工作。

有人知道为什么会在 Wildfly 上发生这种情况吗?


代码:

String resConfName = "sun.net.dns.ResolverConfiguration";
Class resConfClass = Class.forName(resConfName);

异常:

java.lang.ClassNotFoundException: sun.net.dns.ResolverConfiguration from [Module "deployment.myApp.ear.myApp.war:main" from Service Module Loader]

我的野蝇环境:(愁眉苦脸)


我的Websphere 8环境:(笑脸)


我的Websphere 9环境:(笑脸)


简单主要例子:(笑脸)


提前致谢!

WildFly 开发人员指南中有一些关于此的注释。

https://docs.wildfly.org/19/Developer_Guide.html#accessing-jdk-classes

默认情况下,并非所有 JDK 类 都暴露给部署。所以你需要像这样在jboss-deployment-structure.xml中设置一个系统依赖。

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <dependencies>
            <system export="true">
                <paths>
                    <path name="sun/net/dns"/>
                </paths>
            </system>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

在更高版本的 WildFly (18, 19) 中,这似乎无需执行此操作即可工作。