本文主要是介绍java.net.UnknownHostException,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
报错信息
报错分析
UnknownHostException 分析
尝试解决
域名
报错可能
网络请求:
数据库连接:
Socket通信:
总结:
报错信息
java.net.UnknownHostException
Caused by: java.net.UnknownHostException:at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect(Socket.java:589)at org.apache.thrift.transport.TSocket.open(TSocket.java:221)... 83 more
)at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:529)at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:247)at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.java:70)... 80 more
报错分析
UnknownHostException 分析
UnknownHostException
是Java编程中常见的一个网络异常,通常在试图通过域名查找并连接到一个主机时抛出。这个异常的主要原因有以下几点:
DNS解析失败: 当Java程序尝试将一个域名转换为IP地址(即执行DNS解析过程)时,如果DNS服务器无法找到与该域名对应的IP地址,则会抛出此异常。这可能是由于:
①域名拼写错误或格式不正确。
②DNS服务器本身的问题,如宕机、配置错误或缓存过期等。
③网络问题导致DNS查询请求无法到达DNS服务器。
本地hosts文件配置问题: 在某些情况下,操作系统会先查看本地的hosts文件来解析域名。
如果hosts文件中没有对特定域名的映射,或者映射的IP地址不正确,也会导致此异常。
网络连接中断或受限: 网络连接存在问题。
例如防火墙阻止了DNS查询请求,或者网络连接完全断开,都会使得DNS解析无法完成。
目标主机不存在或不可达:
所要访问的主机已下线、迁移或尚未启动服务,因此DNS系统中找不到对应的记录。
临时DNS解析延迟:
DNS更改传播到全球所有DNS服务器需要时间,新注册的域名或最近修改的DNS记录可能在短时间内不能被所有地方正确解析。
尝试解决
域名
Windows位置:C:\Windows\System32\drivers\etc\hosts
Linux位置:/etc/hosts
添加你自己节点名字,和节点IP
示例:
10.2.60.221 bigdata1
10.2.60.223 bigdata2
10.2.60.222 bigdata3
报错可能
网络请求:
当你尝试使用HttpURLConnection、HttpClient等工具通过域名发起HTTP/HTTPS请求时,如果DNS无法解析目标域名的IP地址,则会抛出此异常。
数据库连接:
在JDBC中,如果你提供的数据库URL是一个域名而非IP地址,并且该域名无法被DNS解析,那么在建立数据库连接时也会抛出此异常。
Socket通信:
在直接使用Socket进行TCP/IP通信时,如果需要通过域名创建Socket连接,而域名未解析成功,同样会触发这个异常
总结:
只要是用域名代替IP来进行工作的,都有可能出现被DNS解析不了从而报错的场景
这篇关于java.net.UnknownHostException的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!