【问题标题】:Why won't the preview server in Eclipse respect my @WebServlet annotation?为什么 Eclipse 中的预览服务器不尊重我的 @WebServlet 注释?
【发布时间】:2018-06-08 15:15:36
【问题描述】:

我在我的应用程序中使用@WebServlet 注释,如下所示:

@WebServlet("/tokenize")
public class TokenizerServlet extends HttpServlet {
   ...
}

这在 Eclipse 的“本地 J2EE 预览”中不起作用。对 http://localhost:8080/myApp/tokenizer 的任何请求都会返回 404。当从 web.xml 映射时,同样的 URL 可以正常工作。

但是,当应用程序被部署(在我的例子中是 Azure)时,它确实可以工作。所以问题不在于代码或配置,而与 Eclipse 中的预览服务器有关。

我需要如何配置预览服务器以尊重我的注释?我到处看了,似乎没有太多配置可言。我的web.xml 的根元素如下所示:

<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">

在项目的“J2EE Preview”节点下,我有这个:

更新 --

我从来没有解决这个问题,但我发现在本地运行 Tomcat 非常容易,所以我才开始这样做。我把这个问题留在这里,以防其他人有同样的问题,只是为了让你知道你并不孤单,也许有人会在某个时候提供答案。

【问题讨论】:

    标签: java eclipse servlets java-annotations


    【解决方案1】:

    servlet 中注解的概念是在引入 servlet 3.0 时出现的。以下任何较低版本均不支持注释。我认为在您的 IDE 中您一直在使用低于 3.0 的 servlet 版本。在创建动态 Web 项目时,可以更改此版本。

    【讨论】:

    • 我的 web.xml 根标签(上面提供的)不是表明我使用的是 3.0 吗?
    • 如果没有,我如何使用3.0?我正在使用 Eclipse Oxygen——最新版本。不支持3.0吗?
    • 对不起...我的答案不完整...请检查完整的答案
    • 不,3.0是默认的,我也没改。我刚刚在项目属性下进行了验证——“动态 Web 项目”设置为 3.0。
    • eclipse中使用的服务器是什么??
    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 2011-09-26
    • 2021-07-22
    • 2011-07-21
    • 1970-01-01
    相关资源
    最近更新 更多