Экземпляр ResourceConfig не содержит классов ресурсов root

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

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

Ответ 1

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

<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>

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

Проверьте:

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

Ответ 5

ВАМ НУЖНО ДОБАВИТЬ ВАШЕ ИМЯ ПАКЕТА НА

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

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

Ответ 6

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

Ответ 7

Я получаю это исключение из-за отсутствия 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")

Ответ 8

Я столкнулся с этой проблемой с 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

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

Ответ 10

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

Ответ 11

Имел ту же проблему и выяснил, что это была проблема с тем, как я развернул свой исходный код. Как говорится в сообщении об ошибке: "...does not contain any root resource classes". Поэтому он не смог найти классы ресурсов в настроенном пакете. Я просто использовал классы неправильно - почему он не взял его.

Я забыл развернуть мои файлы классов в каталоге /WEB -INF/classes WAR - сначала я просто получил его прямо в корне файла WAR. Поэтому, когда он искал классы ресурсов, он не нашел их, потому что они существовали в другом (неправильном) месте.

Ответ 12

Такая же проблема - web.xml выглядит так:

<servlet>
    <servlet-name>JerseyServlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.mystuff.web.JerseyApplication</param-value>
    </init-param>
...

Предоставление настраиваемого приложения отменяет любое автоматическое определение классов с помощью XML. Вам нужно внедрить правильные методы для написания собственного кода для подключения классов. См. Javadocs.

Ответ 13

Другой возможной причиной этой ошибки является то, что вы забыли добавить библиотеки, которые уже находятся в папке /WEBINF/lib, в путь сборки (например, при импорте файла .war и не проверять библиотеки при запросе в мастер). Просто случилось со мной.

Ответ 14

Это случилось со мной, когда я развернул свой main.jar, не проверив добавить записи в каталог в меню экспортировать jar в Eclipse.

Ответ 15

Хорошо, немного поздно ответить. Я столкнулся с той же проблемой, и поиски Google были напрасны. Однако мне удалось найти, в чем проблема. Могут быть много причин для получения этой ошибки, но я получил ошибку из-за следующих, и я хотел поделиться этим с моими коллегами-разработчиками.

  • Я ранее использовал Jersey 1.3, и я получал эту ошибку. Но когда я обновил банки до последней версии Джерси, эта проблема была решена.
  • Другой экземпляр, в котором я получил эту ошибку, был, когда я пытался развернуть свою службу в JBoss, создав военный файл. Я допустил ошибку, включая файлы Java в .war вместо классов java.

Ответ 16

Мне пришлось добавить конечную косую черту в конец @path

@Path ("/admin/") 

Ответ 17

Хорошо... Для меня отлично работает только присвоение класса сервлета com.sum.jersey.spi.container.servlet.ServletContainer, я использую IDE (Eclipse Mars)

<servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/frontend/*</url-pattern>
    </servlet-mapping>

но по какой-то причине мне пришлось перезагрузить компьютер, чтобы работать в моем локальном хосте. Если все еще не работает? Вы должны добавить в свой web.xml этот код между тегом "servlet".

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

"the.package.name" - это имя пакета, в котором у вас есть классы. Если вы используете IDE, обновите проект и снова запустите в Tomcat. все еще не работает? перезагрузите компьютер и будете работать.

Ответ 18

Еще одна вещь, которую нужно проверить, это комбинация предыдущих записей

В файле web.xml вы можете:

<init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.acme.rest</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.providers</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>

но вы не можете иметь оба, или вы получаете такую ​​ошибку. Исправление в этом случае было бы комментировать один или другой (возможно, первый фрагмент кода будет прокомментирован)

Ответ 19

да добавив параметр init для com.sun.jersey.config.property.packages, исправил эту проблему для меня.

объединил службы обслуживания трикотажа в приложение spring на основе maven и получил эту ошибку.

Ответ 20

Я также получил такую ​​ошибку, пожалуйста, позаботьтесь о конфигурациях в xml.

Я написал com.sun.jersey.comfig.property.packages

Вместо com.sun.jersey.config.property.packages

После коррекции он работает.

Ответ 21

эта проблема связана с тем, что трикотаж не может найти пакет dependecy для вашего отдыха объявленная услуга

проверить распределение пакета проекта и утвердить, что равно вашему значению параметра web.xml

Ответ 22

В моем случае я добавил баночки дважды в путь сборки после импорта с войны. Он отлично справился после удаления дополнительных банок, в которых отображались страницы ошибок дескриптора ошибок.

добавление

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