2016-02-11 44 views
2

每隔幾天,我會得到一個SocketException,打開太多文件。我將這個問題追蹤到在某個過程中正在使用的臨時pdf文件。該過程傳遞庫創建的臨時文件的名稱。在某些時候,庫會打開一個輸入流,但不會關閉它。鑑於我的代碼只有文件的名稱,有什麼方法可以關閉流?我正在使用的庫打開一個輸入流並且不關閉它。我怎樣才能關閉它?

詳情: Java的Web應用程序中的Tomcat6

+0

你能告訴我怎麼稱呼圖書館,它可以幫助我們找到解決問題的辦法 – Ferrybig

回答

1
  1. 運行最好的辦法是要求一個版本庫的這個錯誤修復。

  2. 如果這不可行,請獲取源代碼,自行修復錯誤。

  3. 如果你不能(只有一個二進制jar文件),嘗試像jd-gui這樣的工具,反編譯有問題的類,修復,重新編譯該類並替換jar中的.class。

  4. 如果仍不起作用,請使用ASM並在正確的位置添加一條關閉語句。這個解決方案應該避免。如果你不掌握這項技術,這很複雜。

+0

如何使用反射? –

+0

@ Adriaan Koster:據我瞭解OP的問題,在對象的引用丟失之前,可能無法及時訪問來自外部世界的流。 – Xvolks

+0

可能,是的,但它可能是一個私人領域......在這種情況下,我認爲反射會比字節代碼操作更可取。 –

相關問題