2015-01-15 2 views
3

Я знаю, что эти вопросы были на этом сайте, но я принял совет с этих страниц и убежища еще не удалось решить проблему. При попытке запуска веб-службы Rest с помощью Джерси, я наткнулся на следующее сообщение об ошибке: -"com.sun.jersey.api.container.ContainerException: экземпляр ResourceConfig не содержит каких-либо корневых классов ресурсов" ошибка на Джерси Отдых

ИСКЛЮЧЕНИЕ

javax.servlet.ServletException: Servlet.init() for servlet Jersey REST Service threw exception 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    java.lang.Thread.run(Thread.java:724) 

первопричину

com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes. 
    com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:99) 
    com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1359) 
    com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:180) 
    com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:799) 
    com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:795) 
    com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) 
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:795) 
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:790) 
    com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:491) 
    com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:321) 
    com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) 
    com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207) 
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:376) 
    com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:559) 
    javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    java.lang.Thread.run(Thread.java:724) 

После делая повторный поиск, я дал ему три проблемы: -

  1. Ошибки в пределах web.xml.
  2. Ресурсов, используемых в рамках упакованного проекта.
  3. Проблемы с файлами .jar.

Я отредактировал web.xml как можно больше и нигде не получил его. Ниже представлен текущий файл web.xml, который я использую.

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>com.epware.jersey.book</display-name> 
    <servlet> 
    <servlet-name>Jersey REST Service</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.epware.jersey.book.resources</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

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

// Will map the resource to the URL todos 
@Path("/books") 
public class BooksResource { 

    @Context 
    UriInfo uriInfo; 
    @Context 
    Request request; 


    @GET 
    @Produces(MediaType.TEXT_XML) 
    public List<Book> getBooksBrowser() { 
     List<Book> books = new ArrayList<Book>(); 
     books.addAll(BookDao.instance.getModel().values()); 
     return books; 
    } 

    @GET 
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
    public List<Book> getBooks() { 
     List<Book> books = new ArrayList<Book>(); 
     books.addAll(BookDao.instance.getModel().values()); 
     return books; 
    } 

    @GET 
    @Path("count") 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getCount() { 
     int count = BookDao.instance.getModel().size(); 
     return String.valueOf(count); 
    } 

    @POST 
    @Produces(MediaType.TEXT_HTML) 
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
    public void newBook(
      @FormParam("id") String id, 
      @FormParam("title") String title, 
      @FormParam("description") String description, 
      @FormParam("authorFirst") String authorFirst, 
      @FormParam("authorSecond") String authorSecond, 
      @FormParam("publisher") String publisher, 
      @FormParam("publishDate") String publishDate, 
      @Context HttpServletResponse servletResponse 
    ) throws IOException { 
     Book book = new Book(id,title,description,authorFirst,authorSecond,publisher,publishDate); 
     BookDao.instance.getModel().put(id, book); 
     System.out.println(BookDao.instance.getModel().toString()); 
     servletResponse.sendRedirect("../create_todo.html"); 
    } 

    @Path("{book}") 
    public BookResource getBook(
      @PathParam("book") String id) { 
     return new BookResource(uriInfo, request, id); 
    } 

} 

настоящее время я использую Джерси баночки версии 1.18, как показано на рисунке ниже: -

Внешняя ссылка изображения: http://i.stack.imgur.com/j6tpC.png

Любая помощь очень ценится аи нахожусь на ограниченное время сейчас, чтобы получить это сделано.

+0

Что такое квалифицированное имя «BooksResource»? –

+0

com.epware.jersey.resources.BooksResource. Существует еще один файл ресурсов, который называется BookResource, который не был исправлен, но в любом случае он не должен быть доступен из веб-сервиса. –

+0

Попробуйте использовать в 'param-value' этот пакет:' com.epware.jersey.resources'. –

ответ

2

Как указано в комментариях, ваша конфигурация в порядке. Однако, видимо, вы изменили пакет ресурсов.

Таким образом, путь к классам не обновлялся. Как и в комментариях, полная очистка и перестройка будут обновлять путь к классам (скомпилированные и ресурсы) и работать.

0

попробовать это @Path (книги) .Он работал для меня или должен проверить

com.sun.jersey.config.property.packages 

значения паров в web.xml. Правильный номер вашего пакета или нет.

0

У меня нет ни малейшего понятия, почему это сработало для меня, но у меня было как 6 образцов образцов в одном рабочем пространстве, и это давало мне ошибку в одном из приложений. После перемещения этого приложения в другое рабочее пространство Eclipse и открытия нового окна Eclipse приложение работало.

Смежные вопросы