[jersey] ResourceConfig 인스턴스에 루트 리소스 클래스가 없습니다.

여기서 뭐가 잘못 됐나요?

The ResourceConfig instance does not contain any root resource classes.
Dec 10, 2010 10:21:24 AM com.sun.jersey.spi.spring.container.servlet.SpringServlet initiate
SEVERE: Exception occurred when intialization
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
        at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:103)
        at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1182)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.access$600(WebApplicationImpl.java:161)
        at com.sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.java:698)
        at com.sun.jersey.server.impl.application.WebApplicationImpl$12.f(WebApplicationImpl.java:695)
        at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:197)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:695)
        at com.sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.java:117)

필터:

<filter>
    <filter-name>JerseyFilter</filter-name>
    <filter-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</filter-class>

    <init-param>
        <param-name>com.sun.jersey.config.feature.Redirect</param-name>
        <param-value>true</param-value>
    </init-param>

    <init-param>
        <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
        <param-value>/views/</param-value>
    </init-param>

    <init-param>
        <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
        <param-value>/(images|css|jsp)/.*</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>JerseyFilter</filter-name>
    <url-pattern>/myresource/*</url-pattern>
</filter-mapping>

암호:

@Path ("/admin")
public class AdminUiResource {

  @GET
  @Produces ("text/html")
  @Path ("/singup")
  public Viewable getSignUp () {
    return new Viewable("/public/signup", "Test");
  }
}



답변

추가해 보셨습니까?

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>my.package.name</param-value>
</init-param>

SpringServlet 정의에? my.package.name을 AdminUiResource가있는 패키지로 바꾸고 클래스 경로에 있는지 확인하십시오.


답변

저는 Jersey를 처음 사용했습니다. 동일한 문제가 있었지만 “/”를 제거하고 @path ( “admin”) 만 사용하면 작동했습니다.

@Path("admin")
public class AdminUiResource { ... }


답변

패키지 이름을 추가해야합니다.

<init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>your.package.name</param-value>
</init-param>

또한 내가 주목
한 한 가지 사실은 MAVEN BUILD 후 프로젝트를 새로 고쳐야 합니다. 그렇지 않으면 동일한 오류가 표시됩니다.
우리가 프로젝트를 새로 고쳐야하는 이유를 알고 있다면 의견을주십시오.


답변

이것은 저지 RESTful 웹 서비스로 실행할 수있는 클래스를 찾을 수 없습니다.

검사:

  • 여부 ‘com.sun.jersey.config.property.packagesweb.xml에서 ‘이 누락 .
  • 값 ‘com.sun.jersey.config.property.packages ‘매개 변수의 이 누락 또는 유효하지 않은지 (언급 된 패키지가 존재하지 않음). 저지 서비스로 실행되는 POJO 클래스를 넣은 패키지 여야합니다.
  • @Path속성으로 주석이 달린 메소드가있는 POJO 클래스가 하나 이상 있는지 여부 입니다.


답변

귀하의 자원 패키지는 하나의 주석을 붙일 수 있고 적어도 하나의 POJO 포함해야 @Path또는 적어도 하나의 방법으로 주석 한 @Path같은 또는 요청 방법 지정자, @GET, @PUT, @POST, 또는 @DELETE. 리소스 메서드는 요청 메서드 지정자로 주석이 달린 리소스 클래스의 메서드입니다. 이것은 내 문제를 해결했습니다 …


답변

JBOSS EAP 6.1에서이 문제를 겪었습니다. 이클립스를 통해 JBOSS 서버에 내 코드를 배포 할 수 있었지만 파일을 JBOSS에 WAR 파일로 배포하려고하면이 오류가 발생하기 시작했습니다.

해결책은 web.xml이 JBOSS와 제대로 작동하도록 두 가지가 함께 작동하도록 구성하는 것이 었습니다.

다음 두 줄은 JBOSS가 자체 구성을 수행 할 수 있도록 web.xml에서 주석 처리되었습니다.

<!--
    <init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>com.your.package</param-value>
</init-param> -->

그런 다음 다음 컨텍스트 매개 변수를 추가하십시오.

<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>resteasy.scan.resources</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>resteasy.scan.providers</param-name>
    <param-value>false</param-value>
</context-param>


답변

기본적으로 아래와 같이 수정했고 모든 것이 잘 작동했습니다.

<servlet>
    <servlet-name >MyWebApplication</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.feature.Redirect</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
        <param-value>/views/</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
        <param-value>/(images|css|jsp)/.*</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>MyWebApplication</servlet-name>
    <url-pattern>/myapp/*</url-pattern>
</servlet-mapping>