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

问题描述 投票:2回答:1

我有下面的Java代码,在一个基本的Main类的例子上可以正常工作。很好!但是在Wildfly(10.0.0)应用服务器上部署时,却找不到这个类,并且出现了异常。

然而,当它部署在Wildfly (10.0.0)应用服务器上时,所提到的类没有被找到,并且抛出了一个异常。我在另一个应用服务器上进行了测试,如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]

我的Wildfly环境: 我的Wildfly环境:

  • Wildfly 10.0.0
  • 使用jdk1.8.0_152。

我的Websphere 8环境。 (快乐的脸)

  • WAS 8.0.0.12,使用jdk1.6.0_45
  • 使用jdk1.6.0_45。

我的Websphere 9环境。 (快乐的脸)

  • WAS 9.0.0.11,使用jdk1.8.0_152
  • 使用jdk1.8.0_152。

简单的主例。 (快乐的脸)

  • 使用jdk1.6.0_45或jdk1.8.0_152。

先谢谢你了!

java websphere wildfly wildfly-10
1个回答
4
投票

在WildFly开发者指南中有一些关于这个问题的说明。

https:/docs.wildfly.org19Developer_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)中,似乎不需要这样做就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.