Jersey JAX-RS-Fehler - Kein provider-Klassen gefunden

Ich bin neu in der Java-Web-Services-und ich bin versucht, eine einfache Implementierung JAX-RS Beispiel mit Jersey Umsetzung mit meiner Eclipse-IDE und der Bereitstellung der Anwendung auf einem Apache Tomcat 6.0 als plugin für meinen Eclipse. Ich bin nach dem Beispiel im Buch java-web-services einrichten und ausführen

Habe ich eine JAX-RS Application:

package adages;

import java.util.Set;
import java.util.HashSet;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/resourcesA")
public class RestfulAdage extends Application {
    @Override
    public Set<Class<?>> getClasses() {
    Set<Class<?>> set = new HashSet<Class<?>>();
        set.add(Adages.class);
        return set;
    }
}

sowie JAX-RS resource:

package adages;

import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.Random;
import com.fasterxml.jackson.databind.ObjectMapper;

@Path("/")
public class Adages {

    private String[] aphorisms = {"What can be shown cannot be said.",
        "If a lion could talk, we could not understand him."};

    public Adages() {
    }

    @GET
    @Produces({ MediaType.APPLICATION_XML })
    public JAXBElement<Adage> getXml() {
        return toXml(createAdage());
    }

    @GET
    @Produces({ MediaType.APPLICATION_JSON })
    @Path("/json")
    public String getJson() {
        return toJson(createAdage());
    }

    @GET
    @Produces({ MediaType.TEXT_PLAIN })
    @Path("/plain")
    public String getPlain() {
        return createAdage().toString() + "\n";
    }

    //Create an Adage and set the words property, which
    //likewise sets the wordCount property. The adage is
    //randomly selected from the array, aphorisms.
    private Adage createAdage() {
        Adage adage = new Adage();
        adage.setWords(aphorisms[new Random().nextInt(aphorisms.length)]);
        return adage;
    }

    //Java Adage --> XML document
    @XmlElementDecl(namespace = "http://aphorism.adage", name = "adage")
    private JAXBElement<Adage> toXml(Adage adage) {
        return new JAXBElement<Adage>(new QName("adage"), Adage.class, adage);
    }

    //Java Adage --> JSON document
    //Jersey provides automatic conversion to JSON using the Jackson
    //libraries. In this example, the conversion is done manually
    //with the Jackon libraries just to indicate how straightforward it is.
    private String toJson(Adage adage) {
        String json = "If you see this, there's a problem.";
        try {
            json = new ObjectMapper().writeValueAsString(adage);
        } catch (Exception e) {
        }
        return json;
    }
}

und meine POJO Klasse:

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "adage")
public class Adage {
    protected String words;
    protected int wordCount;

    public Adage() {
    }

//overrides
@Override
public String toString() {
        return words + " -- " + wordCount + " words";
    }
           //Setters & Getters
}

den web.xml Datei:

<servlet>
    <servlet-name>jersey</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>adages</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

Wenn ich die Bereitstellung der Anwendung auf dem Tomcat-server-dann sehe ich unter Nachrichten in den logs:

INFO: Starting Servlet Engine: Apache Tomcat/6.0.36
Jan 26, 2014 10:19:03 AM com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
  adages
Jan 26, 2014 10:19:03 AM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class adages.Adages
Jan 26, 2014 10:19:03 AM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Jan 26, 2014 10:19:03 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version 'Jersey: 1.10 11/02/2011 03:53 PM'

Heißt es, "Keine provider-Klassen gefunden".

Wenn ich versuche, Zugriff auf den URL - http://localhost:8080/rest/resourcesA/, dann erhalte ich folgende Fehlermeldung:

HTTP Status 404 - /rest/resourcesA/

Hier "ruhen" ist der name von meinem eclipse-Projekt. Bitte mir helfen, wo mache ich Fehler in diesem Beispiel?

Ich gegangen durch diesen post : 404 beim Zugriff auf Jersey-app in Tomcat 7, aber ich immer noch vor dem gleichen Problem.

Dies ist sehr einfaches Beispiel, und ich bin geblieben, warum es nicht funktioniert, sich über mehrere Beiträge, aber ich bin nicht in der Lage, um einen Anhaltspunkt für dieses Problem, bitte lassen Sie mich wissen, wo mache ich Fehler???

InformationsquelleAutor Chaitanya | 2014-01-26

Schreibe einen Kommentar