2012-11-08 8 views
13

Ich erhalte die folgende Ausnahme, wenn ich versuche, einen RESTful-Webdienst von HelloWorld zu erreichen, der mit Jersey und Maven auf Apache Tomcat implementiert wurde.com.sun.jersey.api.container.ContainerException: Die ResourceConfig-Instanz enthält keine Stammressourcenklassen

URL: http://localhost:8080/TestRest/rest/hello/abcd 

com.sun.jersey.api.container.ContainerException: Die ResourceConfig Instanz enthält keine Klassen Ressource root.

Ich schaute auf verschiedene Quellen im Internet, sie sagen, die Ausnahme tritt auf, weil keine Klasse in der Paketstruktur in web.xml gegeben, aber ich habe sichergestellt, dass sie alle korrekt sind.

Jede Hilfe diesbezüglich wird sehr geschätzt.

Im Folgenden finden Sie den Code von pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 
     <groupId>my.test.rest</groupId> 
     <artifactId>TestRest</artifactId> 
     <packaging>war</packaging> 
     <version>0.0.1-SNAPSHOT</version> 
     <name>TestRest Maven Webapp</name> 
     <url>http://maven.apache.org</url> 
     <repositories> 
       <repository> 
       <id>maven2-repository.java.net</id> 
       <name>Java.net Repository for Maven</name> 
       <url>http://download.java.net/maven/2/</url> 
       <layout>default</layout> 
     </repository> 
    </repositories> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.8</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>TestRest</finalName> 
    </build> 
</project> 

Dies ist die einfache Helloworld ist.

package com.rest; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.core.Response; 

@Path("/hello") 
public class HelloWorldService { 

    @GET 
    @Path("/{param}") 
    public Response getMsg(@PathParam("param") String msg) { 

     String output = "Hello, " + msg; 

     return Response.status(200).entity(output).build(); 

    } 

} 

Und schließlich die web.xml

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>Restful Web Application</display-name> 

    <servlet> 
     <servlet-name>HelloServlet</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>com.rest</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>HelloServlet</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

Ich hoffe, dass die Verzeichnisstruktur von mir auch richtig ist, mich bitte zu korrigieren, wenn dies nicht der Fall.

Directory Structure

Antwort

16

Sie haben die HelloWorldService.java in der falschen Quellordner. Es muss in src/main/java nicht in src/main/resources sein. Es ist ein großer Unterschied!

Es bedeutet, dass Ihr Java-Code nicht kompiliert wurde und deshalb erhalten Sie den Fehler. Keine Klasse, die die Anfrage verarbeiten kann.

Werfen Sie einen Blick auf die Maven Standard Directory Layout.

+1

Danke, dass ich den Fehler zeigen ... Wirklich schätzen! –

8

Ja, es ist ein Problem in Eclipse Indigo bei der Entwicklung RESTful Web-Services in Java mit Maven, weil es nicht korrekte Verzeichnisstruktur erstellt. Daher ist das Löschen des angegebenen Quellverzeichnisses und das Hinzufügen der Quelle als src/main/java wie @maba zu Recht erwähnt, die beste Problemumgehung. Sie können dies für eine detaillierte Erklärung verweisen auf die Entwicklung von RESTful Web Services in Java in Eclipse Indigo mit Maven ...

http://kausalmalladi.blogspot.in/2012/11/developing-restful-java-web-service-in.html

Verwandte Themen