Джерси: поставщик WebApplication отсутствует
Я следую за точными шагами в этом http://www.ibm.com/developerworks/library/wa-aj-tomcat/, и я включил все банки правильно (я полагаю). И я все еще получил ошибки, как следующие:
Jun 24, 2013 7:16:21 PM com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
Jun 24, 2013 7:16:21 PM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
com.sun.jersey.api.container.ContainerException: No WebApplication provider is present
at com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69)
at com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:360)
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:275)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:585)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:213)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:342)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:516)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5123)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5407)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Jun 24, 2013 7:16:21 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /Jersey threw load() exception
com.sun.jersey.api.container.ContainerException: No WebApplication provider is present
at com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69)
at com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:360)
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:275)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:585)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:213)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:342)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:516)
at javax.servlet.GenericServlet.init(GenericServlet.java:160)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5123)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5407)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Я только что сделал первый шаг, покажи привет. Мои файлы web.xml и java следующие:
package sample.hello.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello Jersey";
}
}
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>Jersey</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<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>sample.hello.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>
Некоторое время я гуглил, не мог найти хорошего решения. Кстати, мой список файлов JAR: Activation.jar asm-3.1.jar com.sun.jersey.jersey-server-1.4.0.jar jaxb-api-2.2.5.jar jaxb-impl-2.2_1.jar jersey-client.jar jersey-core.jar jersey-json-1.7.jar jersey-spring-1.11-b02.jar jsr311-api.1.1.1.jar stax-api.jar wstx-asl.jar
Эти банки рекомендуются в Интернете. Я скопировал их прямо в папку WEB-INF/lib. Одна вещь, о которой я беспокоюсь, это проблема с путём, кто-то показал мне, что я должен добавить несколько jar-файлов, щелкнув правой кнопкой мыши по классу project-> build path и затем добавить jar. Я тоже попробовал, не очень хорошие новости. Я использую Tomcat7.0. Интернет также ведет на страницу отчета об ошибках. Пожалуйста, помогите!
Я попробовал две ссылки на локальный хост: 8080/Jersey/WEB-INF/web.xml и 8080/Jersey/rest/hello. оба терпят неудачу!
Заранее спасибо.
4 ответа
Я подозреваю, что это может быть дубликат другого вопроса на Stackru. Джерси Нет поставщика WebApplication, когда добавлена зависимость jersey-json
В конечном итоге, убедитесь, что jersey-сервер является зависимостью от вашего пути к классам. Когда вы говорите "список файлов JAR", уверены ли вы, что эти файлы находятся в пути к классам веб-приложения? Это может зависеть от пути сборки вашего IDE, который вызывает ваши проблемы.
Если у вас все еще есть проблемы, пожалуйста, включите IDE, которую вы используете, вместе с тем, как настроен ваш classpath.
У меня было 2 разные версии Джерси в 2 разных пом, и одна зависела от другой. Исправление это решило проблему.
все банки JERSEY должны содержать одну и ту же версию. вот пример:
-
jersey-server-1.17.1.jar
-
jersey-json-1.17.1.jar
-
jersey-core-1.17.1.jar
-
jersey-client-1.17.1.jar
-
jersey-servlet-1.17.1.jar
Эта проблема решена путем добавления одинаковой версии всех модулей jersy в POM. Первоначально я столкнулся с этой проблемой, потому что в POM, который я дал, ядро имеет 1.19.3 и Servlet как 19.3. Позже я изменил все необходимые jersy jars, чтобы сохранить версию 1.19, и решил эту проблему.