我试图在jenkins发布一个项目,并得到一个主机没有发现exception。
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)
通过源代码读取它看起来像是在这一行中引发exception:
InetAddress.getLocalHost().getHostName();
由于我不控制释放插件的源代码,除了改变代码有没有办法解决这个问题? 我可以设置我的etc主机以某种方式来强制从“InetAddress.getLocalHost()。getHostName()”?
我假设您的XXXXXXXXXXXXXXX正在屏蔽实际的非本地主机(或本地主机变体/别名)主机名。
如果您的计算机具有根据您的本地名称parsing程序设置无法正向和反向查找的主机名/ IP地址,则可能会发生这种情况。 已知InetAddress.getLocalHost()执行反向查找来parsing本地主机。
运行hostname命令,并确保您的实际IP地址与/etc/hosts该名称匹配。 可能是hostname正在返回FQDN主机名或别名/短主机名,并且这些不能被正向/反向查找。
另一个问题可能是IPv6与IPv4。
请注意,Jenkins JVM会caching主机名查找,所以有一个小testing程序来testing调用InetAddress.getLocalHost()是值得的,否则在testing每次configuration更改后都应重新启动Jenkins。
请提供反馈/其他详细信息,以便我可以改善这个答案。