Home >Java >javaTutorial >How to resolve UnknownHostException in Java?
A Java.NET.UnknownHostException occurred when a colleague's newly assigned test machine resin started. The cause of the problem was that the host name was configured in the system's /etc/Hostname, but there was no corresponding configuration in the /etc/hosts file. . The simple solution is to configure the corresponding relationship, or even delete the /etc/Hostname file.
The deep reason: In most Linux operating systems, the host name is found based on the configuration in /etc/hosts, but Detian based system uses /etc/ The configuration in the Hostname file is used as the host name.
And Java's InetAddress.java calls InetAddressImpl.java's public native String getLocalHostName() throws UnknownHostException; to obtain the local host name. This method of Java is native and is an implementation of the local system, so it is local When there is a problem with the configuration, there is a problem with the Java code.
hostname View the name of this machine,
If the name of this machine is not an IP address, such as "sohu", you must configure sohu corresponding in /etc/hosts The local IP, otherwise java.net.InetAddress.getLocalHost will throw a java.Net.UnknownHostException exception.
If the local name is an IP address, and it must be a block of the local computer The IP of the network card,
The third situation is more troublesome. If the name of the local machine is an IP address, but not the IP of a certain network card of the local machine, or is only part of an IP address, such as 192.168 (this is what I have encountered), then execute java.net.InetAddress.getLocalHost( ).getHostAddress() will get 192.0.0.168, java.net.InetAddress.getLocalHost().getHostAddress() will not throw an exception, but the related access will stagnate for a long time because it is looking for the address 192.0.0.168. If the network If this address does not exist in the network, a Connection timed out exception will eventually be thrown; if this address exists in the network, the Connection refused to host exception will be thrown, which is obviously not what you want
Conclusion:
1. Set the local name: hostname mName xxx is best not to write the IP address. If you write it, it must be the complete IP form of the local machine (don’t just write half)
2. In/ Add a line of local IP mName to etc/hosts 3. Use InetAddress.getLocalHost().getHostAddress() to test whether the result is consistent with the local IP
The above is the detailed content of How to resolve UnknownHostException in Java?. For more information, please follow other related articles on the PHP Chinese website!