2016-10-15 1 views
1

Also ich baue eine kleine Pause API mit Java mit Jersey 2.23.2. Ich bin auf ein Problem gestoßen, jedoch kann ich das Servlet in der Datei web.xml nicht richtig angeben. Dies ist, wie meine Dateien wie folgt aussehen:Migrated zu Jersey 2.x und jetzt bekomme ich Servlet Container Ausnahme

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."; 
    } 
} 

Mein Projekt Ordnerstruktur sieht wie folgt aus:

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

I verwendet Jersey 1.x vor und dann wanderte ich auf 2.x und jetzt bin ich nicht sicher, was in den params des Servlets in Web zu stellen. XML. Wenn ich versuche, die API.java auf meinem Tomcatbediener zu laufen bekomme ich die folgende Ausnahme:

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

ich meine index.html fein obwohl nur erreichen kann, so dass der Server funktioniert, aber nicht der API-Teil. Ich bin mir nicht sicher, was ich hier machen soll. Offensichtlich stimmt etwas mit dem Servletteil nicht.

EDIT-Dinge, die ich habe versucht:

+0

Können Sie api versuchen? Fügen Sie auch den Fall API.java hinzu, der nicht funktioniert. – Veeram

+0

versuchten beide, sie gaben mir das gleiche Ergebnis. – dikaJoe

+0

Sorry, ich meine, fügen Sie die API.java Klasse zum Beitrag hinzu. – Veeram

Antwort

0

Ich habe diese Fehler oft hatte und fixiert. Es ist im Grunde immer ein Abhängigkeitsproblem.

Hier sind die Schritte zur Behebung des Fehlers

  1. Stellen Sie sicher, dass Sie die aktuellste Version aller Pakete verwenden (das heißt 2.23.2 von Glasfischen) und Server, Ihre POM entsprechend zu aktualisieren. Dies ist sehr wichtig für Ihren Fall, da Sie die neue Version von Jersey verwenden.

  2. Aktualisieren Sie Ihr Projekt

  3. das Maven Menü können

  4. Verwenden Sie das Maven-Menü zu aktualisieren (dies unterscheidet sich von dem Projekt refresh)

Don‘reinigen und bauen t überspringe Schritte oder gehe davon aus, dass, wenn du einige von ihnen hier und da in der Vergangenheit erledigt hast, dasselbe ist, als würden sie nacheinander ausgeführt.

0

Wahrscheinlich Ausgabe mit Servlet-Container "Jersey-Container-Servlet-core" ist für Servlet-Container 2.x, versuchen zu

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