gpt4 book ai didi

java - 迁移到 jersey 2.x,现在我收到 servlet 容器异常

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:57 24 4
gpt4 key购买 nike

所以我正在使用 Jersey 2.23.2 用 java 构建一个小型的 Rest api。但是,我遇到了问题,我无法在 web.xml 文件中正确指定 servlet。这是我的文件的样子:

pom.xml

<dependencies>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.23.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.23.2</version>
<scope>provided</scope>
</dependency>
</dependencies>

web.xml

...
<servlet>
<servlet-name>WebService</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>api-mashup-api.API</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>WebService</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>

</web-app>

API.java

package api;
@Path("/v1")
public class API {
private Controller controller;

public API(){
controller = new Controller();
}

@GET
@Produces(MediaType.TEXT_HTML)
public String print1() {
return "Please specify what resource you need.";
}

/**
* Prints to the screen if we are in /v1/foo
*
* @return
*/
@GET
@Path("/foobar")
@Produces(MediaType.TEXT_HTML)
public String print2() {
return "Please specify what resource you need.";
}
}

我的项目文件夹结构如下所示:

api-mashup-api/Java Resources/src/api/API.java

我之前使用 Jersey 1.x,然后迁移到 2.x,现在我不确定要在 web.xml 中的 servlet 参数中放入什么内容。当我尝试在 Tomcat 服务器上运行 API.java 时,出现以下异常:

SEVERE: Servlet [WebService] in web application [/api-mashup-api] threw load() exception
java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer

我可以很好地访问我的index.html,所以服务器可以工作,但API部分不行。不知道在这里做什么。显然 servlet 部分有问题。

编辑-我尝试过的事情:

最佳答案

我已经多次遇到并修复了这个错误。这基本上总是一个依赖性问题。

以下是修复该问题的步骤:

  1. 确保您使用的是所有软件包的最新版本(即 glassfish 的 2.23.2)和服务器,并相应地更新您的 POM。这对于您的情况非常重要,因为您使用的是新版本的 Jersey。

  2. 刷新您的项目

  3. 使用 Maven 菜单进行清理和构建

  4. 使用Maven菜单刷新(这与项目刷新不同)

不要跳过步骤,也不要假设如果您过去曾在这里或那里完成过其中一些步骤,那么这与一个接一个地执行它们是一样的。

关于java - 迁移到 jersey 2.x,现在我收到 servlet 容器异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40062341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com