Не удается загрузить класс sun. net .dns.ResolverConfiguration на Wildfly (JBOSS) - PullRequest
2 голосов
/ 29 апреля 2020

У меня есть Java код ниже, который отлично работает на базовом примере c Main class. Отлично!

Однако, когда он развернут на сервере приложений 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

My Websphere 8 Environment: (счастливое лицо)

  • WAS 8.0.0.12
  • с использованием jdk1.6.0_45

Среда My Websphere 9: (счастливое лицо)

  • БЫЛО 9.0.0.11
  • с использованием jdk1.8.0_152

Простой основной пример: (счастливое лицо)

  • с использованием jdk1.6.0_45 или jdk1.8.0_152

Заранее спасибо!

1 Ответ

4 голосов
/ 30 апреля 2020

В руководстве разработчика 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), похоже, это работает без необходимости делать это.

...