【问题标题】:HTTP Status 500 – Internal Server Error - The server encountered an unexpected condition that prevented it from fulfilling the requestHTTP 状态 500 - 内部服务器错误 - 服务器遇到阻止它完成请求的意外情况
【发布时间】:2020-09-26 18:23:55
【问题描述】:

所以我试图在 Eclipse 上使用 Tomcat 和 Maven 制作一个非常简单的 Web 服务。我在 pom.xml 中添加了这些依赖项:

  <dependencies>
    <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.1.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>3.0.0-M1</version>
    </dependency>

  </dependencies>

我刚刚将此添加到我的默认 web.xml:

<servlet>
  <servlet-name>jersey-servlet</servlet-name>
  <servlet-class>
    com.sun.jersey.spi.container.servlet.ServletContainer
  </servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>jersey-servlet</servlet-name>
    <url-pattern>/api/*</url-pattern>
  </servlet-mapping>

我只是想得到一个简单的字符串:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("car")
public class Car {

    @GET
    @Path("carName")
    @Produces(MediaType.TEXT_PLAIN)
    public String carName() {
        return "Subaru";
    }
}

控制台日志:

SEVERE: Servlet [jersey-servlet] in web application [/WebService01] threw load() exception
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:540)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:521)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1042)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:983)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4871)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5180)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    ...

在 macCatalina 10.15.4 上运行

【问题讨论】:

  • Tomcat 正在运行(catalina 日志)? Web 应用程序启动时没有错误(应用程序日志)?
  • @Serge 感谢您的回复。我在日志上看到一条错误消息,并通过在 web.xml 上编辑一个空格来纠正它。但是现在我遇到了另一个错误,如我编辑的答案所示。提前谢谢。
  • 根本原因文本下面是什么?
  • @nitind 感谢您的回复,我编辑了我的问题。
  • 您编译的 Java 遵从性如何?那个(旧)版本的 Jersey 是从 2015 年开始的,它正在读取类文件,并且可能比 Java 8 更新的任何东西都可能导致它出现问题。

标签: java eclipse maven web-services tomcat


【解决方案1】:

如何添加到 pom.xml jersey-container-servlet-core 中,其中包含缺少的容器类?

org.glassfish.jersey.servlet.ServletContainer

https://mvnrepository.com/artifact/org.glassfish.jersey.containers/jersey-container-servlet-core/3.0.0-M1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多