打开 URL 连接适用于我的本地工作区,但不适用于 unix 机器

Opening a URL connection works on my local workspace but not on a unix box

以下代码 运行 在我办公室的本地工作区执行时绝对没问题:

URL url = new URL(getImageUrl());
InputStream inputStream = url.openStream();
BufferedImage originalImage = ImageIO.read(inputStream);

getImageUrl returns一个简单的url可以在网络内访问-http://someurl.png

我正在读取的资源是一个 http url - 一个简单的获取操作。

这张图片很容易在前端加载。但是,在springboot后端工程中尝试连接时,出现上述代码失败。

我可以直接在我的办公室网络中访问此图像。

但是,当我在 unix 框中上传我的 java jar 和 运行 服务项目时,此代码因连接超时异常或 'Cannot get input stream from URL!'

不确定为什么它会在不同的环境中表现不同 - 两者都在办公网络内。

操作系统在这里重要吗?当我从 windows 迁移到 unix 操作系统 运行 同一个项目时,我需要使用一些编码吗?

我得到的异常是:

java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_71]
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_71]
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_71]
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_71]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_71]
        at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_71]
        at java.net.Socket.connect(Socket.java:538) ~[na:1.8.0_71]
        at sun.net.NetworkClient.doConnect(NetworkClient.java:180) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:211) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.New(HttpClient.java:308) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.New(HttpClient.java:326) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) ~[na:1.8.0_71]
        at java.net.URL.openStream(URL.java:1045) ~[na:1.8.0_71]

这也可能是防火墙问题,但只是想确定我在使用 ImageIO 的过程中是否做错了什么 class?

另外,这是一个network/machineadministrator/superuser可以解决的问题吗?

两台机器都在办公室网络内的事实并不意味着它们都可以访问(例如不同的 DNS 或防火墙规则等)。

您应该勾选可以下载图像的方框,因此可以从终端(在 linux 方框上)运行:

wget http://typeOffendingURL.png

你可能会得到同样的错误,因为这是一个主机配置错误,而不是 Java。