Экземпляр ResourceConfig не содержит никаких корневых классов ресурсов. - PullRequest
77 голосов
/ 10 декабря 2010

Что здесь не так?

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

Ответы [ 25 ]

80 голосов
/ 11 декабря 2010

Вы пытались добавить

<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, и убедитесь, что он находится в пути к классам.

31 голосов
/ 25 января 2013

Я новичок в Джерси - у меня была та же проблема, но когда я удалил "/" и просто использовал @path ("admin"), это сработало.

@Path("admin")
public class AdminUiResource { ... }
27 голосов
/ 31 октября 2014

ВАМ НЕОБХОДИМО ДОБАВИТЬ ИМЯ ПАКЕТА НА

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

ТАКЖЕ ОДНОВРЕМЕННО, ЧТО Я ЗАМЕЧАЛ,
Мне нужно обновить свой проект после MAVEN BUILD elseэто показывает мне ту же ошибку.
Пожалуйста, прокомментируйте Если вы знаете причину, почему мы должны обновить проект?

26 голосов
/ 13 мая 2012

Это означает, что не удалось найти класс, который может быть выполнен как веб-сервис RESTful-джерси.

Проверка:

  • Отсутствует ли 'com.sun.jersey.config.property.packages' в вашем web.xml.
  • Является ли значение для 'com.sun.jersey.config.property.packages' параметр отсутствует или недействителен (упомянутый пакет не существует). Это должен быть пакет, в который вы поместили свои классы POJO, которые выполняются как сервисы джерси.
  • Существует ли хотя бы один класс POJO, у которого есть метод, помеченный атрибутом @Path.
12 голосов
/ 01 февраля 2012

Ваш пакет ресурсов должен содержать как минимум одно pojo, которое либо аннотировано @Path, либо содержит хотя бы один метод, аннотированный @Path, или указатель метода запроса, такой как @GET, @PUT, @POST или @DELETE.Методы ресурса - это методы класса ресурса, аннотированные указателем метода запроса.Это решило мою проблему ..

11 голосов
/ 18 февраля 2014

Я столкнулся с этой проблемой с JBOSS EAP 6.1. Я смог развернуть свой код через Eclipse на сервере JBOSS, но как только я попытался развернуть файл как файл WAR на JBOSS, я начал получать эту ошибку.

Решением было настроить web.xml для правильной работы с JBOSS, позволив им работать вместе.

Следующие две строки были закомментированы в web.xml, чтобы позволить JBOSS создавать свои собственные конфигурации

<!--  
    <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>
9 голосов
/ 11 декабря 2010

В основном я исправил это, как показано ниже, и все работало нормально.

<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>
8 голосов
/ 22 февраля 2013

Я получаю это исключение из-за отсутствия ResourseConfig в Web.xml.

Добавить:

<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>/* Name of Package where your service class exists */</param-value>
</init-param>

Класс обслуживания означает: класс, который содержит такие службы, как: @Path("/orders")

7 голосов
/ 30 марта 2012

У меня возникла та же проблема при попытке запустить веб-приложение из проекта eclipse. Как только я скопировал файлы .class в /WEB-INF/classes, все заработало отлично.

6 голосов
/ 21 сентября 2012

У меня была та же проблема, я тестировал кучу разных примеров и перепробовал все возможные решения.Что наконец-то заставило меня работать, так это когда я добавил @Path("") к строке класса, я пропустил это.

...