2015-11-03 3 views
3

У меня проблема с развертыванием сервлета Tomcat с использованием maven; Я читал об этой проблеме в других сообщениях, но все еще не мог добиться успеха в ответах/предложениях.Джерси-сервлет-исключение tomcat jersey

Я не получаю это исключение независимо от того, что я пытаюсь:

javax.servlet.ServletException: Servlet.init() для сервлета Джерси веб-приложения кинул за исключением org.apache.catalina.authenticator .AuthenticatorBase.invoke (AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:518) org.apache.coyote.http11.AbstractHttp11Processor.pro cess (AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:673) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1500) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor $ Worker .run (ThreadPoolExecutor.java:615) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745) Основная причина com.sun.jersey.api.container.ContainerException: экземпляр ResourceConfig не содержит корневой ресурс классы. com.sun.jersey.server.impl.application.RootResourceUriRules. (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:509) com.sun.jersey.spi.container.servlet.ServletContainer $ InternalWebComponent.initiate (ServletContainer.java:339) 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:394) com.sun.jersey.spi.container.servlet.ServletContainer.init (ServletContainer.java:577) javax.servlet.GenericServlet.init (GenericServlet .java: 158) org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorR eportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:518) орг .apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:673) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor .doRun (NioEndpoint.java: 1500) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) java.util.concurrent .ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745)

Это мой файл web.xml:

<servlet> 
    <servlet-name>Jersey Web Application</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.example 
    </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

И мой pom.xml

<dependencies> 
<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>asm.jar</artifactId> 
    <version>20041228.180559</version> 
</dependency> 
<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>jersey-bundle.jar</artifactId> 
    <version>1.19</version> 
</dependency> 
<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>jersey-server.jar</artifactId> 
    <version>1.19</version> 
</dependency> 
<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>jersey-core.jar</artifactId> 
    <version>1.8</version> 
    <type>pom.lastUpdated</type> 
</dependency> 

sum.java файл

package com.rest.example; 

import javax.ws.rs.Path; 
import javax.ws.rs.GET; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

public class sum { 
@Path("/hello") 

@GET 
@Produces(MediaType.TEXT_PLAIN) 
public String sayHello() 
{ 
     return "Hello World"; 
    } 

} 

И на всякий случай:

and the project itself

Я попытался очистки и строить его снова, но до сих пор нет изменений; Что мне не хватает? Благодарю.

ответ

7

Сообщение об ошибке:

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

<init-param> 
    <param-name>com.sun.jersey.config.property.packages</param-name> 
    <param-value>com.rest.example</param-value> 
</init-param> 

выше говорит Джерси сканировать com.rest.example пакет для классов, аннотированных @Provider и @Path так, что он может зарегистрировать их. Ошибка говорит вам, что классы ресурсов, зарегистрированные во время загрузки приложения. Причина:

public class sum { 
@Path("/hello") 

@Path аннотации должны идти на сверху определения класса, а не ниже. Джерси не нашел классов ресурсов, потому что в классе нет @Path аннотации.

+0

СПАСИБО! он работает сейчас – ohadsas

0

я получил довольно ту же проблему, даже с этой установкой и вошел в javax.servlet.ServletException: Servlet.init() для сервлета [джерси-сервлет] выбросил исключение вызванного java.lang.ArrayIndexOutOfBoundsException: 14877

Проблема была в конце концов, что я не был достаточно конкретным с пакетом, и мой проект перешел в большой каталог домашнего пакета. Знайте и собирайте все конечные точки в пакете, отделенном в проекте.

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