問題原因:
一般情況下是tomcat下的包與項目里的包重復加載了。那么應該是這個jar包加載失敗導致應用程序啟動失敗。
比如:
仔細查找下,發現應用程序WEB-INF/lib目錄下存在servlet-api.jar,同時tomcat的common/lib目錄下也存在servlet-api.jar。
如果是這樣的話: 可以將項目里的這些包(如servlet-api.jar)設置為 provided。
問題處理:
例如,用maven 的話,可以這樣設置:
1 <dependency> 2 <groupId>javax.servlet</groupId> 3 <artifactId>javax.servlet-api</artifactId> 4 <version>3.0.1</version> 5 <scope>provided</scope> 6 </dependency>
這樣就表明程序依賴,但編譯的時候,不會將jar包一起打包,以免和tomcat的包產生沖突。
注:
要不是maven 項目的話,可以這樣:
刪除應用程序中WEB-INF/lib目錄下的servlet-api.jar,重新編譯打包部署,應用程序啟動成功並且tomcat沒有報異常。