Java 名为[/HelloServlet]和[com.sample.HelloServlet]的servlet都映射到不允许的url模式[/HelloServlet]

Java 名为[/HelloServlet]和[com.sample.HelloServlet]的servlet都映射到不允许的url模式[/HelloServlet],java,eclipse,tomcat,servlets,Java,Eclipse,Tomcat,Servlets,我做了一个有错误的项目: 出现问题:本地主机上的服务器Tomcat v7.0无法启动 当我试图启动tomcat来运行它时。 这是我的密码。这是从核心servlets书中摘取的 package com.sample; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; @WebServlet("/HelloServlet") public class HelloServlet extends HttpServ

我做了一个有错误的项目:

出现问题:本地主机上的服务器Tomcat v7.0无法启动

当我试图启动tomcat来运行它时。 这是我的密码。这是从核心servlets书中摘取的

package com.sample;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public HelloServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html"); 
PrintWriter out = response.getWriter(); 
String docType = 
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + 
"Transitional//EN\">\n"; 
out.println(docType + 
"<HTML>\n" + 
"<HEAD><TITLE>Hello</TITLE></HEAD>\n" + 
"<BODY BGCOLOR=\"#FDF5E6\">\n" + 
"<H1>Hello</H1>\n" + 
"</BODY></HTML>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
我对sevlets很陌生,不知道大多数错误的意思。我做错了什么?我在网上搜索了其他类似的问题,但是我找到的答案不起作用

这是我的web.xml文件:

<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.sample.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>/HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

HelloServlet
com.sample.HelloServlet
/HelloServlet
/HelloServlet

我真的不知道这是什么,这是干什么用的。但我导入的大多数项目都有这个,所以我只做了一个。但不确定这是否正确。

这可能是因为您将web.xml servlet配置与基于注释的配置混合在一起,因此请检查您是否在web.xml中声明了相同的servlet

基于xml,您有两个选项,因为您正在使用注释配置servlet,您可以从web.xml中删除de标记。 或者,如果要修复web.xml,则需要从servlet名称标记中删除start/from,它需要与之前的servlet名称匹配,以便:

<servlet-mapping> 
   <servlet-name>HelloServlet</servlet-name> 
   <url-pattern>/HelloServlet</url-pattern> 
</servlet-mapping>

HelloServlet
/HelloServlet

您必须导入“javax.servlet.annotation.WebServlet”才能使用@WebServlet(“/HelloServlet”),您可以使用portable tomcat并检查server.xml文件中tomcat的端口号,以便tomcat端口不会与您现有的端口冲突。

错误:tomcat服务器无法启动

决议:

  • 清洁工作区(工作区工作多次
  • 运行的Tomcat whle直接指向web.xml文件。。 需要检查web.xml文件中写入的内容….†his也是服务器问题
  • 有时,这是由于与jar文件绑定不当造成的。 为此,首先手动将jar文件添加到WEB-INF、lib文件夹中,然后再添加到WEB-INF、lib文件夹中 右键单击项目和属性,然后将jar添加到buildpath选项中
  • 正确清理,构建工作区,然后再次尝试启动服务器。
    它将工作:)

    本地主机上的服务器Tomcat v7.0无法启动。

    在我的eclipse(Juno)中,我修复了以下方法

    1.清理项目和服务器

    2.从以下目录中删除.snap文件

    {workspace directory}\.metadata\.plugins\org.eclipse.core.resources

    3.从以下目录中删除temp文件


    {workspace directory}\.metadata\.plugins\org.eclipse.wst.server.core

    请提供stacktrace请在日志中提供完整错误。问题已用stacktrace更新。您可以发布您的web.xml内容吗?正如日志所说,您与使用相同url模式的两个servlet发生冲突,原因是:java.lang.IllegalArgumentException:名为[/HelloServlet]和[com.sample.HelloServlet]的servlet都映射到url模式[/HelloServlet],这是不允许的。我猜您也在web.xml中映射了servlet。请删除web.xml servlet映射。它们将从您提供的注释中选取这是我的web.xml文件:HelloServlet com.sample.HelloServlet/HelloServlet/HelloServlet我实际上知道这是什么以及它的用途。所以我只做了一个。但不确定这是否正确。这是我的web.xml文件:HelloServlet com.sample.HelloServlet/HelloServlet/HelloServlet。我实际上不知道这是什么,也不知道这是干什么用的。但我导入的大多数项目都有这个,所以我只做了一个。但不确定这是否正确。
    <servlet-mapping> 
       <servlet-name>HelloServlet</servlet-name> 
       <url-pattern>/HelloServlet</url-pattern> 
    </servlet-mapping>