Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java URL::openStream抛出;插座异常:插座关闭;无条件地_Java_Networking - Fatal编程技术网

Java URL::openStream抛出;插座异常:插座关闭;无条件地

Java URL::openStream抛出;插座异常:插座关闭;无条件地,java,networking,Java,Networking,我在macOS Catalina上运行MacBook Pro 使用Java的Java.net.URL类,我应该能够从URL读取数据。但是,无论我做什么,我都会得到java.net.SocketException:socketclosed 该程序是该问题的一个最小示例: import java.io.InputStream; 导入java.net.URL; 公开课范例{ 公共静态void main(字符串[]args)引发异常{ URL=新URL(“http://example.com/"); I

我在macOS Catalina上运行MacBook Pro

使用Java的
Java.net.URL
类,我应该能够从URL读取数据。但是,无论我做什么,我都会得到
java.net.SocketException:socketclosed

该程序是该问题的一个最小示例:

import java.io.InputStream;
导入java.net.URL;
公开课范例{
公共静态void main(字符串[]args)引发异常{
URL=新URL(“http://example.com/");
InputStream=url.openStream();
}
}
执行时,会发生
SocketException
并退出,出现错误:

$ javac Example.java && java Example
Exception in thread "main" java.net.SocketException: Socket closed
    at java.base/java.net.SocketInputStream.socketRead0(Native Method)
    at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
    at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
    at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
    at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:252)
    at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:292)
    at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:351)
    at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:746)
    at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
    at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:717)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1604)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1509)
    at java.base/java.net.URL.openStream(URL.java:1117)
    at Example.main(Example.java:7)
$ echo $?
1
预期结果将是没有输出和零退出代码

上面的示例是使用此Java版本运行的(但在其他Java版本中也会发生相同的错误):


我尝试过的每个Java版本(例如OpenJDK15或ZULU11)都会出现这种情况。不管我使用什么网站,不管是否使用主机名或IP地址,不管是HTTP还是HTTPS,也不管是哪个端口(80443,非标准)。它发生在与本地机器上的服务和internet上的服务交谈时。重新启动后问题仍然存在。

我在我的机器(JDK 11)上运行了您的程序,运行起来很有魅力

我想问题不在于java,而在于执行代码的位置。 它是虚拟机还是容器(Docker)? 这也可能与防火墙有关。
我的钱花在某种网络配置问题上。

我在macOS Catalina的MacBook Pro上运行。为了进一步测试这一点,我尝试了Python(工作):
python3-c'导入请求;打印(请求。获取)https://stackoverflow.com/"));'。我认为你完全正确,因为这是一个网络配置问题,可能是JVM特有的问题?你能发布一个使用非ssh url的调用堆栈,以摆脱所有这些ssh内容吗?这些内容确实会让事情变得混乱?和java版本/版本在这个精确的调用中使用,请。
$ java -version
openjdk version "11.0.2" 2019-01-15 LTS
OpenJDK Runtime Environment Zulu11.29+3-CA (build 11.0.2+7-LTS)
OpenJDK 64-Bit Server VM Zulu11.29+3-CA (build 11.0.2+7-LTS, mixed mode)