Maven 發布插件拋出主機名稱未找到異常?

Maven 發布插件拋出主機名稱未找到異常?

我正在嘗試在詹金斯中發布一個項目並獲得主機未找到異常。

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()”的特定回應嗎?

答案1

我假設您的 XXXXXXXXXXXXXXX 正在掩蓋實際的非本地主機(或本地主機變體/別名)主機名稱。

如果您的電腦的主機名稱/IP 位址無法根據本機名稱解析器設定進行正向和反向查找,則可能會發生這種情況。 InetAddress.getLocalHost()已知執行反向查找來解析本機。

執行該hostname命令,並確保您的真實 IP 位址與 中的該名稱相符/etc/hosts。可能會hostname傳回 FQDN 主機名稱或別名/短主機名,且無法正向/反向尋找這些內容。

另一個問題可能是 IPv6 與 IPv4 的比較。

請注意,Jenkins JVM 將快取主機名稱查找,因此有一個小的測試程式來對 進行測試呼叫是值得的InetAddress.getLocalHost(),否則您應該在每次測試配置變更後重新啟動 Jenkins。

請提供反饋/其他詳細信息,以便我改進這個答案。

相關內容