2 回答

TA貢獻1776條經驗 獲得超12個贊
通常在典型的 java web 應用程序(war)結構中——編譯后的類文件應該在文件夾中結束WEB-INF/classes
(除非它們可以作為 jar 歸檔,然后它們也可以在 WEB-INF/lib 中)。因此,請嘗試將項目的構建路徑更改為<your-project>/WebContent/WEB-INF/classes
. 您可以參考下面所附的屏幕截圖
這是我嘗試使用的類以及啟動服務器時控制臺上的輸出
package Bot;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* Application Lifecycle Listener implementation class CarregarBot
*
*/
public class CarregarBot implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
System.out.println("CarregarBot initialized");
}
@Override
public void contextDestroyed(ServletContextEvent event) {
}
}
控制臺輸出
Aug 27, 2019 1:22:47 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/TestWebApp] has started
CarregarBot initialized
Aug 27, 2019 1:22:47 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/TestWebApp] is completed

TA貢獻1752條經驗 獲得超4個贊
好的,所以你的代碼看起來都很好(好,可操作),沒有問題。我 99% 確定這不是代碼問題,而是構建/部署問題。
我建議您執行以下操作:
0) 如果您使用 Maven 并具有 servlet-api 依賴項,請檢查 servlet-api 依賴項范圍(如果更改任何內容,請從 Maven 上下文菜單進行項目更新),否則請確保檢查導出和部署程序集
1)清理項目(在 eclipse 項目 -> Clean 中)
2)清理tomcat工作目錄并部署和/或重新部署(或啟動一個全新的Tomcat實例)
3)如果它仍然不起作用,請嘗試打開war文件(或者如果從eclipse部署,請轉到Tomcat工作目錄并導航到偵聽器應位于的文件夾)并檢查它是否確實存在。
4)如果沒有,請查看是否可以在“問題”視圖中找到任何問題,以了解為什么未構建它
5)如果問題仍然存在,還請檢查類輸出文件夾的設置,如 @Shailendra 所描述并重做步驟 1-4。
添加回答
舉報