场景 #1:您在 tomcat已经运行时意外地从命令行重新部署。
简答:停止 Tomcat,删除目标文件夹,mvn 包,然后重新部署
场景 #2: request.getRequestDispatcher(" MIS_SPELLED_FILE_NAME .jsp")
简短答案:检查文件名拼写,确保大小写正确。
场景#3:类未找到异常
(答案放在这里,因为:问题#17982240)(java.lang.ClassNotFoundException for servlet in tomcat with eclipse)(被标记为重复并在此处指示我)
简短答案 #3.1:web.xml 在 servlet-class 标记中有错误的包路径。
简短答案 #3.2:java 文件有错误的导入语句。
以下是场景 #1 的更多详细信息:
1:停止Tomcat
- 选项 1:通过终端中的 CTRL+C。
- 选项2:(终端关闭而tomcat仍在运行)
- ------------ 2.1:按:Windows+R --> 输入:“ services.msc ”
- ------------ 2.2:在列表的名称栏中找到“Apache Tomcat #.# Tomcat#”。
- ------------ 2.3:右键-->“停止”
2:删除“目标”文件夹。
(这里 mvn clean 帮不了你)
3:mvn包
4:YOUR_DEPLOYMENT_COMMAND_HERE
(我的:java -jar target/dependency/webapp-runner.jar --port 5190 target/*.war)
完整的故事:
不小心打开了一个新的 git-bash 窗口并尝试通过以下方式为我的 heroku 项目部署一个 .war 文件:
java -jar 目标/依赖/webapp-runner.jar --port 5190 目标/*.war
部署失败后,我意识到我打开了两个 git-bash 窗口,并且没有使用 CTLR+C 停止之前的部署。
我遇到了:
HTTP 状态 404 - 未找到类型状态报告
消息 /if-student-test.jsp
描述 源服务器没有找到目标资源的当前表示或不愿意透露存在的表示。
Apache Tomcat/8.5.31
以下是场景 #3 的更多详细信息:
场景 3.1:您的 web.xml 文件中的 servlet 类包路径错误。
它应该匹配 java servlet 类顶部的包语句。
文件:my_stuff/ MyClass.java:
package my_stuff;
文件:PRJ_ROOT/src/main/webapp/WEB-INF/ web.xml
<servlet-class>
my_stuff.MyClass
</servlet-class>
场景 3.2:
您在 myClass.java 文件的顶部放置了错误的“ package ”语句。
例如:
文件位于:“ /my_stuff ”文件夹
你错误地写:
package com.my_stuff
这很棘手,因为:
1:maven build(mvn包)这里不会报错。
2:web.xml 中的servlet-class 行可以有正确的包路径。例如:
<servlet-class>
my_stuff.MyClass
</servlet-class>
使用的堆栈:
Notepad++ + GitBash + Maven + Heroku Web App Runner + Tomcat9 + Windows10: