2013-07-22 2 views
7

Я пытаюсь создать веб-сервис с Tomcat и Eclipse с использованием библиотеки трикотажа. Это мой класс обслуживания:Jersey java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

package com.gontuseries.university; 

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


@Path("/university") 
public class UniversityRestWs { 

    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String getHtmlUniversityInfo(){ 
     return "<html><body>test</body></html>"; 
    } 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getTextUniversityInfo(){ 
     return "test"; 
    } 
} 

И это файл web.xml

<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.gontuseries.university</param-value> 
</init-param> 
</servlet> 
<servlet-mapping> 
<servlet-name>Jersey REST Service</servlet-name> 
<url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

Когда я проверить свою службу я получаю java.lang.ClassNotFoundException: com.sun.jersey.spi.container .servlet.ServletContainer Я загрузил майку от https://jersey.java.net/download.html

Может кто-нибудь мне помочь? Спасибо

+1

Поместите 'jersey-server.jar' в путь к классам. – NINCOMPOOP

+0

Я сделал это. Но это все еще не работает. Я также пробовал другой проект с разными библиотеками. Я добавил их в папку WEB-INF/lib и установил путь к классам с помощью eclipse в Java Build Path-> libraries -> Библиотеки веб-приложений. Кажется, я не могу добавить внешние библиотеки в свой проект. – user2607498

ответ

4

Класс com.sun.jersey.spi.container.servlet.ServletContainer содержится в «jersey-servlet.jar», поэтому вы должны поместить его в WEB-INF/lib вместе с «jersey-server.jar».

+0

После добавления jersey-servlet.jar я получаю Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContainerInitializer. Я использую Джерси 1.15 – Siddharth

12

Для меня проблема заключалась в том, что на сервере не было баночек в папке lib. Убедитесь, что он имеет доступ ко всем зависимостям в: project -> properties -> development assembly -> add -> java build path entries.

+0

извините не получилось – Siddharth

7

Человек, у меня была та же проблема. Я решаю id, добавляя jersey-servlet-1.18.jar в WEB-INF/lib. Затем эта папка увидела, как это:

.
Помните, добавьте все эти банки, чтобы YOUT наращивания пути

+0

После добавления jersey-servlet.jar я получаю javax/servlet/ServletContainerInitializer noclassdeffounderror .. Затем я добавил все банку (как упоминалось выше), я получаю то же самое искушение – Siddharth

0

Если вы используете-Джерси jaxrs-ри-2,9 версию почтового индекса, используйте приведенные ниже в файле WEB.XML.

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    ...... 
</init-param> 
9

У меня была такая же проблема. Нам просто нужно использовать путь для создания Eclipse. Это сработает.

Убедитесь, что он имеет доступ ко всем зависимостям в: проект -> Свойства -> сборочный развитие -> Добавить -> Java Build записи путь -> Maven зависимость

я использовал только один джерси расслоением зависимость

"зависимость

 <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-servlet</artifactId> 
     <version>1.17</version> 

зависимость"

Если вы используете Maven, лучше всего несколько простых шагов будет работать приложение

+0

Я забыл что, Спасибо: project -> properties -> assembly assembly -> add -> java build path entries -> maven dependency (WEB-INF/lib) – user1767316

-1

Мы получаем эту ошибку из-за выпуск пути сборки и запуска устаревшее DEPENDENCY names.Latest своего от org.glassfish и не com.sun.After замены с последними зависимостями для 2.0, Вы должны добавить библиотеки «Сервер времени выполнения» в Построить путь.

"java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer»

Выполните следующие шаги для решения класса не найдено исключение

правой кнопкой мыши на проекте. -> Build Path -> Build Path -> Add Library -> Среда выполнения сервера -> Apache Tomcat v7.0

Спасибо, Сэчин GN

1

Я получил ту же ошибку - "java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer", при попытке выполнить успокоительный джерси веб-сервис в tomcat от eclipse.

Следующие шаги помогли мне решить эту проблему:

  • Правильная зависимость Maven в правой версии зависимых банок

     <dependency> 
        <groupId>com.sun.jersey</groupId> 
        <artifactId>jersey-server</artifactId> 
        <version>1.19</version> 
        </dependency> 
        <dependency> 
        <groupId>com.sun.jersey</groupId> 
        <artifactId>jersey-servlet</artifactId> 
        <version>1.19</version> 
        </dependency> 
    
  • правой кнопкой мыши на проекте затмений -> Maven - Project> Обновление

  • Обеспечить правильную настройку сборки свойств eclipse. Щелкните правой кнопкой мыши на проекте - Свойства -> сборки развития -> Добавить -> Java записи пути сборки -> Maven зависимость

0

Я получаю эту ошибку в проекте Eclipse, который ранее работал отлично, работает на Tomcat 7.0. В конце концов я решил это, удалив проект из Tomcat и добавив его обратно.

0

Вышеуказанные решения верны, но даже после внесения этих изменений я получал эту ошибку. Итак, что я сделал, были удалены все загруженные jersey банки и обновлены Project снова с новой зависимостью maven, и это решило мою проблему.