无法找到localhost或127.0.0.1

时间:2017-06-26 09:43:22

标签: scala networking localhost

有线问题。我写了一个scala程序,它将连接到本地postgresql数据库。这个程序在几个星期前运行良好,但是当我今天运行它时,它会抛出异常:

Caused by: java.net.UnknownHostException: localhost
    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 org.postgresql.core.PGStream.<init>(PGStream.java:68)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)

我将连接网址更改为&#34; 127.0.0.1&#34;,它会抛出

Caused by: java.net.UnknownHostException: 127.0.0.1
    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 org.postgresql.core.PGStream.<init>(PGStream.java:68)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
    ... 16 more

在这两种情况下,连接网址为:

jdbc:postgresql://localhost:5432/readinglist

jdbc:postgresql://127.0.0.1:5432/readinglist

其他信息可能有用:

  1. 我可以使用&#34; - host = localhost&#34;连接到本地postgresql数据库。我计算机上的shell选项

  2. 我的电脑是mac book air,没有vm或docker正在运行

  3. 将连接URL更改为远程数据库并且运行正常

  4. 我在IDEA和shell中运行程序,两者都无法连接到本地数据库

  5. 重新启动计算机无法正常工作

  6. 添加或评论&#34; 127.0.0.1 localhost&#34;在/ etc / hosts中然后重新启动无法正常工作

  7. 如果您愿意,可以提供更多信息。

    所以我想知道什么会使程序无法知道&#34; localhost&#34;或&#34; 127.0.0.1&#34;,或者在不知道真正原因的情况下,我还能做些什么来解决它?

2 个答案:

答案 0 :(得分:1)

您上次工作时是否碰巧添加了SOCKS代理?查看堆栈跟踪:

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

JVM正在使用SOCKS代理,该代理显然无法解析localhost。尝试从网络配置中删除SOCKS代理。根据我的经验,Java与SOCKS有点不同。

答案 1 :(得分:0)

这听起来像是我刚刚解决的类似问题。事实证明,这是ShadowsocksX-R阻止了PostgreSQL与scala程序之间的连接。您可以查看是否已安装ShadowsocksX-R或任何VPN。

这是ShadowsocksX-R版本,在我的Mac上引起了问题: screenshot of ShadowsocksX-R version