上下文:我是一個非常有經驗的程序員,但不是一個非常有經驗的Java程序員。Java io.FileNotFoundException;可疑端口問題
我已經繼承了一小部分代碼來生成JNLP以包裝JAR以收集有關客戶端計算機的一些信息。在沒有在URL中明確指定端口的情況下,這一直運行良好,但在需要明確指定端口的測試環境中失敗。
相關的Java代碼:
URL RegURL = new URL(System.getProperty("jnlp.reg"));
...
try {
//Create connection
connection = (HttpURLConnection)RegURL.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (connection.getOutputStream());
wr.writeBytes (urlParameters);
wr.flush();
wr.close();
//Get Response
InputStream is = connection.getInputStream();
...
} catch (Exception e) {
...
} finally {
...
}
RegURL
的形式"http://arthur.OURCOMPANY.com:81/fb/register.php"
的價值,我們已經確認是這種情況。但我得到一個客戶端的錯誤:
java.io.FileNotFoundException: http://arthur.OURCOMPANY.com/fb/register.php
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at main.main(main.java:253)
...
這意味着該錯誤是由行解僱InputStream is = connection.getInputStream();
我認爲,這意味着地方沿途的端口號迷路了它使用的是URL,我會的確,預計會失效。但是,我不知道爲什麼端口號會丟失。
任何見解都會受到歡迎。
仔細檢查屬性'jnlp.reg',並且它在url中仍有端口81。 –
哇。不是。今天早些時候,因爲我有一些調試和檢查它。是時候弄清楚這裏到底發生了什麼。 –
噢,我打賭我明白了:調用發生在不同的上下文環境中,並且要求構建JNLP的調用將在本地進行,因此它不使用明確的端口。當我在前面進行組件測試時,我正在調用直接生成JNLP的PHP(即給出明確的瀏覽器URL)。 我不確定我將如何完成這項工作,因爲Java的回調幾乎肯定需要使用顯式端口來完成,但這是它的本質。如果你願意,你可以寫一些我可以接受的答案。 –