我正在尝试重现此问题中给出的解决方案,但我仍然遇到同样的错误。
Tomcat 7 keeps giving me a 404. What am I doing wrong?
这是servlet代码:
edu@ubuntu:~/ch1$ cat ch1servlet.java
package com.example;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ch1servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
java.util.Date today = new java.util.Date();
out.println("<html> " +"<body>" +"<h1 align=center>HF\'s Chapter1 Servlet</h1>" +" " + "<br>" + today + "</body>" + "</html>");
}
}
编译时使用:
edu@ubuntu:~/ch1/WEB-INF$ javac -classpath /usr/share/tomcat7/lib/servlet-api.jar -d classes ../ch1servlet.java
edu@ubuntu:~/ch1/WEB-INF$ ls classes/com/example/ch1servlet.class
classes/com/example/ch1servlet.class
这是web.xml的内容
edu@ubuntu:~/ch1/WEB-INF$ cat web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
>
<servlet>
<servlet-name>Chapter1 Servlet</servlet-name>
<servlet-class>com.example.ch1servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Chapter1 Servlet</servlet-name>
<url-pattern>/Serv1</url-pattern>
</servlet-mapping>
</web-app>
然后我将ch1目录复制到$ CATALINA_HOME / webapps
edu@ubuntu:~/ch1$ cd ..
edu@ubuntu:~$ ps -aux | grep tomcat
tomcat7 1053 0.3 11.3 2557684 85272 ? Sl 03:12 0:51 /usr/lib/jvm/java-8-oracle/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -classpath /usr/share/tomca 7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/tmp/tomcat7-tomcat7-tmp org.apache.catalina.startup.Bootstrap start
edu 2259 0.0 0.1 11744 916 pts/1 S+ 07:24 0:00 grep --color=auto tomcat
edu@ubuntu:~$ sudo mkdir /usr/share/tomcat7/webapps
edu@ubuntu:~$ sudo cp -rf ch1/ /usr/share/tomcat7/webapps/
edu@ubuntu:~$ ls /usr/share/tomcat7/webapps/
ch1
edu@ubuntu:~$
当我尝试访问192.168.1.45:8080/ch1/Serv1
时我得到臭名昭着的404“请求的资源(/ ch1 / Serv1 /)不可用”
这是我正在使用的java版本:
edu@ubuntu:~$ java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
我在不同的教程中重复了大约十几次相同的过程,我总是陷入同样的困境。
答案 0 :(得分:0)
复制文件并修改web.xml后,必须重新启动tomcat才能加载新的web.xml文件。
答案 1 :(得分:0)
好的,这有点令人讨厌。
我在CATALINA_BASE / webapps中复制了目录,而不是CATALINA_HOME / webapps,我找到的每个教程都告诉我。
有效。我只是想知道原因。
我想知道为什么CATALINA_HOME中没有webapps目录而我必须创建它。