Estou testando nosso aplicativo de servidor (escrito em Java) em diferentes sistemas operacionais e pensei que o OpenSolaris (2008.11) seria o menos problemático devido à boa integração Java. Acontece que eu estava errado, pois acabei com um UnknownHostException
try {
computerName = InetAddress.getLocalHost().getHostName();
if (computerName.indexOf(".") > -1)
computerName = computerName.substring(0,
computerName.indexOf(".")).toUpperCase();
} catch (UnknownHostException e) {
e.printStackTrace();
}
O resultado é:
java.net.UnknownHostException: desvearth01: desvearth01
at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
No entanto, nslookup desvearth01
retorna o endereço IP correto e nslookup localhost
retorna 127.0.0.1
conforme o esperado. Além disso, o mesmo código funciona perfeitamente no FreeBSD. Há algo especial no OpenSolaris que eu não conheço?
Todas as dicas são apreciadas, obrigado.
fonte
127.0.0.1 localhost <hostname>
era suficiente para mimhostname
comando do terminal.Eu uso
NetworkInterface.getNetworkInterfaces()
como uma queda para quandoInetAddress.getLocalHost()
joga umUnknownHostException
. Aqui está o código (sem tratamento de exceção para maior clareza).Enumeration<NetworkInterface> iterNetwork; Enumeration<InetAddress> iterAddress; NetworkInterface network; InetAddress address; iterNetwork = NetworkInterface.getNetworkInterfaces(); while (iterNetwork.hasMoreElements()) { network = iterNetwork.nextElement(); if (!network.isUp()) continue; if (network.isLoopback()) continue; iterAddress = network.getInetAddresses(); while (iterAddress.hasMoreElements()) { address = iterAddress.nextElement(); if (address.isAnyLocalAddress()) continue; if (address.isLoopbackAddress()) continue; if (address.isMulticastAddress()) continue; return address.getHostAddress(); } }
Outras respostas editam o
/etc/hosts
arquivo. Isso é sujeito a erros, frágil, pode exigir acesso root e não funcionará em todos os sistemas operacionais.fonte
Na minha instância do Amazon eu estava tendo o mesmo problema, havia um problema de configuração DNS padrão. Então, para corrigir o problema, executei estas etapas -
$hostname ip-10-122-16-169
$ping ip-10-122-16-169 ping: unknown host ip-10-122-16-169
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ip-10-122-16-169 ::1 localhost6 localhost6.localdomain6
$ping ip-10-122-16-169 PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=255 time=0.018 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=255 time=0.024 ms
fonte
As pesquisas de host no Solaris usam
/etc/nsswitch.conf
isso dependendo do que a linha 'hosts:' diz que determina se/etc/hosts
NIS, DNS e / ou LDAP devem ser consultados.Se você usa apenas hosts e DNS, deve ter isso em
/etc/nsswitch.conf
:O motivo pelo qual
nslookup desvearth01
funciona é porque onslookup
comando consulta diretamente/etc/resolv.conf
. Se você quiser fazer um teste de linha de comando melhor, use o comando:fonte
Este erro aparece quando eu alterei o nome da estação de trabalho e tentei iniciar o Glassfish 2. Você também deve renomear a entrada em / etc / hosts, algo assim:
127.0.0.1 localhost 127.0.1.1 MyNewName
fonte
Faça checkout de / etc / hostname e coloque seu nome de host no arquivo hosts.
fonte
Se você vir esta mensagem, precisa definir o nome do host COM
hostname superhost.domain
COMANDO !Depois disso, verifique qual
/etc/hosts
arquivo contém string como esta127.0.0.1 localhost
.Além disso, verifique se o comando
uname -a
retorna algo assim:ASSIM NÃO!!!!
fonte
Outra opção está nesta postagem (na verdade, o que está em seu arquivo / etc / sysconfig / network para seu nome de host ... alterando-o para um nome FQDN corrige esse problema).
java getLocalHost () UnknownHostException / etc / hosts arquivo difere linux api?
fonte
Também estou tendo problemas com isso. Preciso fazer mais testes, mas parece que
NetworkInterface.getNetworkInterfaces()
pode ser mais confiável. Acho que isso não faz a consulta, mas apenas pega o IP.Estou usando-o como o 'próximo melhor' quando o
getLocalHost()
falha.fonte