2012-02-08 92 views
1

我有一個Tomcat7安裝在我的磁盤上的文件夾,我使用它在eclipse上運行它的Web應用程序上做了一些測試,它工作良好。當我嘗試部署一個獨立的Tomcat服務器上的應用程序它提供了一個錯誤:(我使用Windows)在窗口上運行的Tomcat7

Fev 08, 2012 9:10:04 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet Process 
java.lang.NullPointerException 
    at hs.server.CommandFactory.<init>(CommandFactory.java:27) 
    at hs.server.Process.init(Process.java:40) 

和線27在這種背景:

19-String pathname = "/"+packageName.replace(".", "/")+"/"; 
20  //String pathname = packageName.replace(".", "/"); 
21-  URL resource = loader.getResource(pathname); 
22-  File commandDir = (new File(resource.getFile())); 
23-  
24-  //File commandDir = new File(loader.getResource(packageName.replace(".", 25-"/")).getFile()); 
26- 
27-  for(String classFilepath: commandDir.list()) { 

我猜是關於URL的問題,但問題是我在eclipse上的tomcat實例上運行它沒有任何問題。謝謝

回答

1

File.list()將返回null如果File代表一個不存在的目錄。這個null會導致你的for循環引發空指針異常。

您需要讓自己的代碼具有防禦性,並且在嘗試閱讀之前使用File上的方法檢查該目錄是否存在。