Java 使用eclipse创建servlet后,Tomcat 7服务器无法启动
在Eclipse中尝试启动本地Tomcat 7服务器时出现错误:Java 使用eclipse创建servlet后,Tomcat 7服务器无法启动,java,eclipse,jsp,tomcat,servlets,Java,Eclipse,Jsp,Tomcat,Servlets,在Eclipse中尝试启动本地Tomcat 7服务器时出现错误: “在本地主机上启动Tomcat v7.0服务器”遇到问题。 本地主机上的服务器Tomcat v7.0无法启动 以下是我采取的步骤: 创建一个名为“test”的新项目 创建一个新的index.jsp文件 创建一个名为“Testservlet”的新的servlet 包名称:testpackage 为Web应用程序库配置新的生成路径。从Tomcat7目录添加一个外部JAR,我添加了ServletAPI.JAR 这是Eclipse中的路径
“在本地主机上启动Tomcat v7.0服务器”遇到问题。 本地主机上的服务器Tomcat v7.0无法启动 以下是我采取的步骤:
servlet
包名称:testpackageServletAPI.JAR
web.xml
文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>test</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Testservlet</servlet-name>
<servlet-class>testpackage.Testservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Testservlet</servlet-name>
<url-pattern>/Testservlet</url-pattern>
</servlet-mapping>
</web-app>
package testpackage;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(description = "a test servlet", urlPatterns = { "/Testservlet" })
public class Testservlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/html");
out.println("This is a test servlet");
}
}
接下来,我将项目添加到Tomcat服务器并尝试启动服务器。这就是我在停止服务器运行时遇到的错误
如果我从web.xml文件中删除与servlet相关的标记,服务器就可以正常启动。这是我删除的标记:
<servlet>
<servlet-name>Testservlet</servlet-name>
<servlet-class>testpackage.Testservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Testservlet</servlet-name>
<url-pattern>/Testservlet</url-pattern>
</servlet-mapping>
Testservlet
testpackage.Testservlet
Testservlet
/Testservlet
我假设我需要web.xml中的上述标记,以便在导航到test/Testservlet时显示servlet?尤其是当我将项目部署到远程服务器时
我做错了什么?Servlet API 3.0包含了一个名为
javax.Servlet.annotation
的新包,它提供了类似@WebServlet
的注释,用于注释Servlet类,这可以消除web.xml
中Servlet配置的使用。因此,servlet
和servlet映射
已经过时
另外,您不应该在应用程序中部署
ServletAPI.jar
。Tomcat7已经有了这些类,并且它支持许多ServletAPI。它将使用web应用程序部署描述符自动选择要加载的ServletAPI 最佳解决方案是在创建servlet时添加服务器运行时
1.在sevelet名称创建时添加服务器运行时
2.添加指定的tomcat安装位置“在本地主机上启动tomcat v7.0服务器”遇到问题。本地主机上的服务器Tomcat v7.0无法启动。是否有关于此错误的更多详细信息?查看存储在tomcat文件夹下的
日志
文件夹请转到您的工作空间文件夹,然后导航到[workspace\u文件夹]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\logs检查此处的日志以查找发生的情况。我想您可能不知道为什么在我将此项目部署到远程Tomcat7服务器后导航到test/Testservlet时出现404错误?是您创建了test.war
还是您的应用程序的上下文?项目名称与用于部署应用程序的上下文不同。您应该指定部署应用程序的上下文。我创建了一个test.war,并在webapps
中部署了它。它创建了测试目录,我将其放在webapps/ROOT/中。我可以使用导航到index.jsp文件http://host.biz:8080/test/
但是当我尝试在http://host.biz:8080/test/Testservlet
ROOT代表上下文/
,您应该在url中使用它而不是/test
,为什么要手动执行此操作?只需将test.war
复制到webapps
即可自动部署。或者最好使用Tomcat管理器来完成,但这需要使用管理器的权限。当我将其放置在webapps
中时,它会自动部署,但我必须将其移动到根目录中才能导航到它,而它不会在根目录中自动部署,我不知道这两方面的原因。我不理解您关于Testservlet 404的第一点。谢谢你的帮助。