簡體   English   中英

遷移到澤西2.x現在我得到servlet容器異常

[英]Migrated to jersey 2.x and now I get servlet container exception

所以我正在使用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的params中。 當我嘗試在我的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. 確保您使用的是最新版本的所有軟件包(即2.23.2的glassfish)和服務器,並相應地更新您的POM。 這對您的案例非常重要,因為您使用的是新版本的Jersey。

  2. 刷新您的項目

  3. 使用Maven菜單清理和構建

  4. 使用Maven菜單刷新(這與項目刷新不同)

不要跳過步驟或假設如果你過去在這里和那里做過其中的一些,那就像一個接一個地做它們一樣。

可能與servlet容器“jersey-container-servlet-core”的問題是針對servlet 2.x容器,嘗試更改為

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM