2012-11-08 27 views
13

Tôi nhận được ngoại lệ sau khi tôi cố gắng nhấn một dịch vụ web HelloWorld RESTful được triển khai bằng Jersey và maven trên Apache Tomcat.com.sun.jersey.api.container.ContainerException: Ví dụ ResourceConfig không chứa bất kỳ lớp tài nguyên gốc nào

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

com.sun.jersey.api.container.ContainerException: Các ví dụ ResourceConfig không chứa bất kỳ lớp nguồn gốc.

Tôi đã xem các nguồn khác nhau trên internet, họ nói ngoại lệ xảy ra vì không có lớp trong cấu trúc gói được đưa ra trong tệp web.xml, nhưng tôi đảm bảo rằng tất cả đều đúng.

Bất kỳ trợ giúp nào về việc này được đánh giá cao.

Tiếp theo là mã của 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> 

Đây là HelloWorldService đơn giản.

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(); 

    } 

} 

Và cuối cùng, 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> 

Tôi hy vọng cấu trúc thư mục của tôi là đúng quá, hãy sửa lại cho tôi nếu nó không phải là.

Directory Structure

Trả lời

16

Bạn có HelloWorldService.java trong thư mục nguồn sai. Nó phải nằm trong src/main/java không phải trong src/main/resources. Đó là một sự khác biệt lớn!

Điều đó có nghĩa là mã Java của bạn chưa được biên dịch và đó là lý do bạn gặp lỗi. Không có lớp nào có thể xử lý yêu cầu.

Hãy xem Maven Standard Directory Layout.

+1

Cảm ơn vì đã chỉ cho tôi những sai lầm ... Thực sự đánh giá cao! –

8

Vâng, đó là vấn đề trong Eclipse Indigo khi phát triển các dịch vụ web RESTful trong Java bằng Maven vì nó không tạo cấu trúc thư mục chính xác. Vì vậy, việc xóa thư mục nguồn đã cho và thêm nguồn là src/main/java vì @maba được đề cập đúng là giải pháp tốt nhất. Bạn có thể tham khảo này cho lời giải thích chi tiết về phát triển các dịch vụ web RESTful trong Java trong Eclipse Indigo sử dụng Maven ...

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

Các vấn đề liên quan