Назад | Перейти на главную страницу

Плагин выпуска Maven выдает Hostname Not found exception?

Я пытаюсь выпустить проект в jenkins и получаю исключение host not found.

Caused by: java.lang.RuntimeException: java.net.UnknownHostException: XXXXXXXXXXXXXXX: nodename nor servname provided, or not known
    at org.apache.maven.scm.provider.perforce.PerforceScmProvider.generateDefaultClientspecName(PerforceScmProvider.java:420)
    at org.apache.maven.scm.provider.perforce.PerforceScmProvider.getClientspecName(PerforceScmProvider.java:395)
    at org.apache.maven.scm.provider.perforce.command.checkout.PerforceCheckOutCommand.executeCheckOutCommand(PerforceCheckOutCommand.java:75)
    at org.apache.maven.scm.command.checkout.AbstractCheckOutCommand.executeCommand(AbstractCheckOutCommand.java:82)
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)

Читая исходный код, похоже, что исключение выбрасывается в этой строке:

InetAddress.getLocalHost().getHostName();

Поскольку я не контролирую источник для плагина выпуска, кроме изменения кода, есть ли способ обойти эту проблему? Могу ли я каким-то образом настроить свои хосты и т. Д., Чтобы вызвать конкретный ответ от "InetAddress.getLocalHost (). GetHostName ()"?

Я предполагаю, что ваш XXXXXXXXXXXXXXX маскирует фактическое имя хоста, отличное от localhost (или вариант / псевдоним localhost).

Это может произойти, если ваша машина имеет имя хоста / IP-адрес, который не может использоваться как для прямого, так и для обратного просмотра в соответствии с настройками локального преобразователя имен. InetAddress.getLocalHost() как известно, выполняет обратный поиск для определения локального хоста.

Запустить hostname и убедитесь, что у вас есть запись, соответствующая вашему реальному IP-адресу этому имени в /etc/hosts. Может быть что hostname возвращает либо полное доменное имя хоста, либо псевдоним / короткое имя хоста, и они не могут быть просмотрены вперед / назад.

Другой проблемой может быть IPv6 по сравнению с IPv4.

Обратите внимание, что JVM Jenkins будет кэшировать поиск имени хоста, поэтому стоит иметь небольшую тестовую программу для выполнения тестового вызова InetAddress.getLocalHost(), в противном случае вам следует перезапускать Jenkins после каждого тестируемого изменения конфигурации.

Пожалуйста, предоставьте отзыв / дополнительную информацию, чтобы я мог улучшить этот ответ.