我从Oracle Docs复制了示例程序,我正在运行它#34;按原样#34;在Eclipse中。
然而,每次运行它我都得到ConnectionException
。我还需要配置其他什么吗?另外,我对这个问题的理解很弱,请你推荐关于Java Web编程的初学者指南。
代码是
public class Test {
public static void main(String[] args) throws Exception {
URL oracle = new URL("http://www.oracle.com/");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
我得到的例外是
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at Test.main(Test.java:9)
我可以通过Chrome访问http://www.oracle.com
,我可以访问互联网。如果是防火墙问题,有人可以告诉我如何解决这个防火墙问题?
答案 0 :(得分:4)
我已经使用了你的代码,并在我的eclipse环境中本地运行它。它工作并产生如下输出:
<!DOCTYPE html> <html lang="en-US" class="no-js"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript"> var _U = "undefined"; var g_HttpRelativeWebRoot = "/ocom/"; var SSContributor = false; var SSForceContributor = false; var SSHideContributorUI = false; var ssUrlPrefix = "/us/"; var ssUrlType = "2"; var g_navNode_Path = new Array(); g_navNode_Path[0] = '8'; var g_ssSourceNodeId = "8"; var g_ssSourceSiteId = "ocomen"; </script> .....
这留下了一个问题,因为失败不是您的程序的一部分,而是您环境的一部分。
当我输入此答案时,您添加了代理设置。
您应该将-Djava.net.useSystemProxies=true
添加到应用程序的运行框中,或者添加:
System.setProperty("java.net.useSystemProxies", "true");
在主方法的第一行。这是documented here:
java.net.useSystemProxies (默认值:false)
在最近的Windows系统和Gnome 2.x系统上,有可能 告诉java.net堆栈,将此属性设置为true,以使用 系统代理设置(这两个系统都允许您在全局设置代理 通过他们的用户界面)。请注意,仅检查此属性 一旦启动。
那应该引入系统代理设置......
有许多因素可以适用:
java.net.useSystemProxies
设置为true,并希望它将引入系统属性。