Je teste notre application serveur (écrite en Java) sur différents systèmes d'exploitation et je pensais qu'OpenSolaris (2008.11) serait le moins gênant en raison de la belle intégration Java. Il s'avère que j'avais tort, car je me retrouve avec une exception UnknownHostException
try {
computerName = InetAddress.getLocalHost().getHostName();
if (computerName.indexOf(".") > -1)
computerName = computerName.substring(0,
computerName.indexOf(".")).toUpperCase();
} catch (UnknownHostException e) {
e.printStackTrace();
}
La sortie est:
java.net.UnknownHostException: desvearth01: desvearth01
at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
Cependant, nslookup desvearth01
renvoie l'adresse IP correcte et nslookup localhost
retourne 127.0.0.1
comme prévu. De plus, le même code fonctionne parfaitement sur FreeBSD. Y a-t-il quelque chose de spécial à OpenSolaris dont je ne suis pas au courant?
Tous les indices appréciés, merci.
la source
127.0.0.1 localhost <hostname>
était suffisant pour moihostname
commande du terminal.J'utilise
NetworkInterface.getNetworkInterfaces()
comme solution de repli pour lesInetAddress.getLocalHost()
lancersUnknownHostException
. Voici le code (sans traitement d'exception pour plus de clarté).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(); } }
D'autres réponses modifient le
/etc/hosts
fichier. Ceci est sujet aux erreurs, fragile, peut nécessiter un accès root et ne fonctionnera pas sur tous les systèmes d'exploitation.la source
Sur mon instance Amazon, j'avais le même problème, il y avait un problème de configuration DNS par défaut. Donc, pour résoudre le problème, j'avais fait ces étapes -
$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
la source
Les recherches d'hôte sur Solaris l'utilisent en
/etc/nsswitch.conf
fonction de ce que la ligne «hosts:» indique qu'elle détermine si/etc/hosts
NIS, DNS et / ou LDAP doivent être consultés.Si vous n'utilisez que des hôtes et DNS, vous devriez avoir ceci dans
/etc/nsswitch.conf
:La raison
nslookup desvearth01
fonctionne parce que lanslookup
commande consulte directement/etc/resolv.conf
. Si vous voulez faire un meilleur test de ligne de commande, utilisez la commande:la source
Cette erreur apparaît lorsque j'ai changé le nom du poste de travail et essayé de démarrer Glassfish 2. Vous devez également renommer l'entrée dans / etc / hosts, quelque chose comme ceci:
127.0.0.1 localhost 127.0.1.1 MyNewName
la source
Vérifiez / etc / hostname puis placez votre nom d'hôte dans le fichier hosts.
la source
Si vous voyez ce message, vous devez définir le nom d'hôte AVEC
hostname superhost.domain
LA COMMANDE !Après cela, vérifiez quel
/etc/hosts
fichier contient une chaîne comme celle-ci127.0.0.1 localhost
.Vérifiez également que la commande
uname -a
renvoie quelque chose comme ceci:PAS COMME ÇA!!!!
la source
Une autre option est dans ce post (en fait, ce qui est dans votre fichier / etc / sysconfig / network pour votre nom d'hôte ... en le changeant en nom FQDN résout ce problème).
java getLocalHost () UnknownHostException Le fichier / etc / hosts diffère de l'api Linux?
la source
J'ai également des problèmes à ce sujet. J'ai besoin de faire des tests supplémentaires, mais il semble que cela
NetworkInterface.getNetworkInterfaces()
puisse être plus fiable. Je pense que cela ne fait pas la recherche, mais saisit simplement l'adresse IP.Je l'utilise comme le «prochain meilleur» en cas d'
getLocalHost()
échec.la source