3

我的程序在一段时间内完美运行,但之后出现错误

java.net.UnknownHostException: www.sears.com
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:666)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1534)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at extractData.ReviewsSearch.getJsonResponse(ReviewsSearch.java:28)
at main.java.DepartmentCategories_Main.main(DepartmentCategories_Main.java:110)

java.net.UnknownHostException: www.sears.com
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
at sun.net.www.http.HttpClient.New(HttpClient.java:308)
at sun.net.www.http.HttpClient.New(HttpClient.java:326)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1167)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1103)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:997)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:931)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1511)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at extractData.productHierarchySearch.getHierarchy(productHierarchySearch.java:27)
at main.java.DepartmentCategories_Main.main(DepartmentCategories_Main.java:115)

任何想法,可能是什么原因?让我知道是否需要更多信息

编辑:我尝试了 ping 命令,我意识到这是互联网连接。我在 ssh 服务器上运行程序,想知道如何防止代码停止。我希望它等待连接。

4

3 回答 3

0

您的服务器似乎无法确定服务器的 IP 地址。弹出此错误时,您可以检查DNS是否正常工作?只需打开命令提示符窗口并尝试 ping 该服务器 www.sears.com

于 2015-07-06T18:23:25.377 回答
0

当您尝试使用其主机名连接到远程主机时,它会出现,但无法解析该主机的 IP 地址。

表格文件:

抛出表示无法确定主机的 IP 地址。

如何解决 UnknownHostException?

UnknownHostException指定一个非常直接的问题。您尝试访问的远程主机的 IP 地址无法解析。所以解决这个问题非常简单。您应该检查 Socket 的输入(或任何其他抛出 的方法UnknownHostException),并验证它是否是预期的。如果您不确定您是否拥有正确的主机名,您可以启动一个 UNIX 终端并使用 nslookup 命令(以及其他命令)查看您的 DNS 服务器是否可以成功地将主机名解析为 IP 地址。这是一个例子:

nikos@nikos:~$ nslookup www.google.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
Name:   www.google.com
Address: 173.194.39.209
Name:   www.google.com
Address: 173.194.39.210
Name:   www.google.com
Address: 173.194.39.212
Name:   www.google.com
Address: 173.194.39.211
Name:   www.google.com
Address: 173.194.39.208

nikos@nikos:~$ 

如果您在 Windows 上,则可以使用 host 命令。如果这不能按预期工作,您应该检查您拥有的主机名是否正确,然后尝试刷新您的 DNS 缓存。如果这也不起作用,请尝试使用不同的 DNS 服务器,例如Google Public DNS 是一个很好的选择。

参考:

http://examples.javacodegeeks.com/core-java/net/unknownhostexception/java-net-unknownhostexception-how-to-solve-unknownhostexception/

于 2015-07-06T18:26:40.593 回答
0

其他答案解决了您看到的特定异常。但是,您(可能)真的在问该怎么做。

正如您所遇到的,在现实世界中,有时事情会失败(并引发异常)。在那些预计异常是暂时的情况下,您应该捕获异常并安排重试操作。您可能想立即重试,但更多情况下,最好稍等片刻后再重试。这个想法是让正在发生的任何问题得到修复(或自行修复),然后再重试。

记录异常(或至少是摘要)通常是一个好主意,以防可能需要操作员干预才能让事情重新开始。

如果在该操作成功之前无法继续,您可能需要循环重试。如果您可以处理其他内容,则可以通过将问题项放在工作队列的后面来实现重试。

对于前一种情况:

doWork("www.sears.com");

变成

while (true) {
    try {
        doWork("www.sears.com");
        break;
    } catch (UnknownHostException e) {
        logger.log(e.getMessage());
        Thread.sleep(10000);
    }
}
于 2015-07-23T19:42:19.440 回答