2009-11-30 27 views
2

我遇到了commons-io/java-io的一個奇怪問題。基本上,我的文件創建失敗,沒有例外的默默無聞。如何糾正這種使用Java IO寫入文件的無提示失敗?

FileUtils.writeLines(file, collectionOfStrings); 

我已經通過了公共的代碼看起來,試圖弄清楚爲什麼會失敗默默,但對我來說,它看起來像它應該拋出異常。 (見行1338,163 FileUtils.java和線路927 IOUtils.java

在努力嘗試解決這個問題,我添加了這個檢查,代碼前面的行後,

if (!file.exists()) { 
    logger.warn("File creation failed."); 
} 

然而,即使文件創建失敗,也不會輸入此塊。

我在這個智慧的結尾,任何有Java IO經驗的人都能幫助我嗎?

+0

您確定該文件不存在?也許這是一個由應用程序創建的臨時文件? – 2009-11-30 13:14:37

+0

嗯,爲了給這個問題多一些上下文,當在我的ID下本地運行時,該文件在我有權訪問的網絡共享上創建。但是,當在Web上下文中運行Tomcat時,作爲本地服務,該文件從不創建,這對我來說很有意義。不過,我只是試圖記錄該文件從未創建。 – 2009-11-30 13:17:11

回答

1

我有點尷尬,但我忘了在我的web應用程序中包含commons-io jar。導致運行時間問題。

我真正的問題是,java.lang.NoClassDefFoundError:組織/阿帕奇/公/ IO/fileutils中 消息並沒有進入我的日誌,因爲的NoClassDefFoundError也不例外,精彩由Sun在這裏。

當這個NoClassDefFoundError命中時,剩下的代碼沒有執行,包括file.exists()檢查。

+5

未來筆記,如果你想抓住你的日誌的任何失敗,抓住Throwable,而不是例外。 – james 2009-11-30 14:22:31

+0

@詹姆斯,絕對。我只是將我所有的頂級日誌記錄轉換爲Throwable。 – 2009-11-30 15:20:22