问题描述
我使用 Eclipse,偶尔会导出我的程序并从命令行运行它。除了这一件事外,功能完全相同:
HttpsURLConnection
从网站读取一些数据。当我从 Eclipse 运行代码时,这很好用。但是,在我将代码导出为 Runnable JAR 后,程序的这一部分不起作用:我得到一个
java.io.IOException: Server returned HTTP response code: 503
private List<Event> parse(final String url) throws IOException {
InputStream inputStream = null;
try {
URL u = new URL(url);
HttpsURLConnection con = (HttpsURLConnection)u.openConnection();
con.setRequestProperty("User-Agent","Mozilla/5.0 (compatible; Windows NT 6.1)");
inputStream = con.getInputStream();
} catch (MalformedURLException e) {
e.printstacktrace();
}
final String page
= org.apache.commons.io.IoUtils.toString(inputStream,java.nio.charset.StandardCharsets.US_ASCII);
inputStream.close();
...
}
请注意,我的程序只访问本网站一次。它不会“骚扰”服务器...
解决方法
我用 java
替换了命令行中的 "C:\Program Files\Java\jdk-13.0.1\bin\java.exe"
,现在它可以工作了。
[通过转到项目 → 属性 → 运行/调试设置 → 编辑 → 显示命令行,我发现这就是 Eclipse 正在做的事情]。
我不确定我之前使用的普通 java
究竟指向哪里 - 在这一点上,我不打算调查。