【问题标题】:Can't load class sun.net.dns.ResolverConfiguration on Wildfly (JBOSS)无法在 Wildfly (JBOSS) 上加载 sun.net.dns.ResolverConfiguration 类
【发布时间】:2020-08-13 22:42:59
【问题描述】:

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

但是,当它部署在 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 环境:(悲伤的脸)

  • 野蝇 10.0.0
  • 使用 jdk1.8.0_152

我的 Websphere 8 环境:(笑脸)

  • 是 8.0.0.12
  • 使用 jdk1.6.0_45

我的 Websphere 9 环境:(笑脸)

  • 是 9.0.0.11
  • 使用 jdk1.8.0_152

简单的主要例子:(笑脸)

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

提前谢谢你!

【问题讨论】:

    标签: java websphere wildfly wildfly-10


    【解决方案1】:

    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) 的更高版本中,这似乎无需执行此操作即可工作。

    【讨论】:

      猜你喜欢
      • 2017-11-29
      • 2017-10-12
      • 2011-11-08
      • 2013-07-22
      • 2016-04-29
      • 2021-02-27
      • 2016-12-01
      • 1970-01-01
      • 2015-01-10
      相关资源
      最近更新 更多