首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

WebLogic 11g 遷移問題:File.list() 回傳 null 導致 NullPointerException

     編輯:程式設計綜合問答

將專案從 WebLogic 8 (JDK 1.4) 遷移至 WebLogic 11g (JDK 1.6) 後,呼叫 FileY.filenum() 時拋出 NullPointerException,堆疊追蹤指向 file.list() 回傳 null 導致 files.length 失敗。

根本原因

File.list() 在目錄不存在、非目錄、或無讀取權限時會回傳 null(非空陣列)。JDK 版本升級可能導致安全性限制更嚴格,或部署路徑不同,使得原本可讀的目錄在新環境不可讀。

解決方案

  1. 檢查路徑是否存在且為目錄:
    File file = new File(fileurl);
    if (!file.exists() || !file.isDirectory()) {
        // 記錄錯誤或拋出自訂異常
        return 0;
    }
    
  2. 檢查讀取權限:確保執行 WebLogic 的作業系統使用者對該目錄具備讀取權限。
  3. 防禦性程式設計:
    String[] files = file.list();
    int result = (files != null) ? files.length : 0;
    
  4. 記錄實際路徑:在 log 中印出 file.getAbsolutePath() 確認部署後的真實路徑。

補充建議

若需遞迴統計子目錄檔案數,考慮使用 Files.walk() (JDK 8+) 或 Apache Commons IO FileUtils,更健壯且簡潔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved