网上搜到的基本都是说监听的端口被占用了
然而我这个并不是在监听的时候出的,而是向外发出http请求的时候报错
这部分代码最近没修改过,之前一直没问题,今天突然出现的
而且在其他机器上同样的代码也没问题
用的是commons-httpclient-3.0.1.jar
相关代码如下
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
GetMethod get = new GetMethod(url);
get.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
try {
int ret = client.executeMethod(get);
...
}
catch (IOException e) {
//然后就是执行到这里了
}
打印的异常栈如下
java.net.BindException: 地址已在使用
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
at java.net.Socket.bind(Socket.java:631)
at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:138)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:124)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)