java - HTTP 状态 500 - 由 DeploymentDescriptorLoadException 引起的实例化 servlet 类时出错

标签 java maven tomcat servlets

我正在尝试自学 servlet 和 Tomcat 等。我按照一些在线教程尝试使用 maven 构建我的第一个 servlet,然后我得到了这个错误:

type Exception report

message Error instantiating servlet class com.perficient.servlets.HelloWorld

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class com.perficient.servlets.HelloWorld
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)
root cause

java.lang.ClassNotFoundException: com.perficient.servlets.HelloWorld
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1858)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1709)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.64 logs.

我在网上做了一些研究,但没有一个答案能解决我的问题。我的项目树如下所示: Project Tree

问题说:

Description Resource    Path    Location    Type
CHKJ3000E: WAR Validation Failed: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xml  FirstWebapp     Unknown Validation Message

所以我认为 web.xml 一定有问题,但我不熟悉此错误消息。这是我的 web.xml:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>com.perficient.servlets.HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>

有人知道我的 web.xml 出了什么问题吗?非常感谢!

最佳答案

ClassNotFoundException: com.perficient.servlets.HelloWorld

  1. Tomcat 无法找到您的 HelloWorld 类。确保在 WEB-INF/classes 中添加了 com.perficient.servlets.HelloWorld

  2. 将映射更改为:

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

关于java - HTTP 状态 500 - 由 DeploymentDescriptorLoadException 引起的实例化 servlet 类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113332/

相关文章:

Python 项目与 Maven 的依赖关系 - ModuleNotFoundError : No module named 'xxx'

java - JSTL - 无法访问存储为 session 变量的对象的属性

java - 如何在 Oracle JDK 1.7 中启用禁用的密码套件

java - 与类中带括号的关键字 static 混淆

java - Selenium 等待 PrimeFaces 4.0 ajax 处理

maven 不是有效的 Maven 主目录

java - Mockito 不能模拟接口(interface)吗?

tomcat - Google Load-balancer 对后端的请求随机失败

eclipse - 安装 tomcat 7 时 ZLIB 输入流意外结束

java - 三元语句突破构造函数