Я получаю эту ошибку tomcat "java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer", когда я запускаю Tomcat с использованием eclipse:
Я вижу, что eclipse не включает банки в папку (tomcat 7.0) WEB-INF/Lib, хотя я пробовал это:
Включены зависимости Maven в "сборке веб-развертывания" в свойствах проекта. (Maven загрузил зависимости в POM.xml, но эти банки не подхватываются eclipse)
POM.xml следующим образом:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dcr.javacode.rest.jersey</groupId>
<artifactId>JAXRS-HelloJerseyExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>maven2-repository.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
<layout>default</layout>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.17</version>
</dependency>
</dependencies>
</project>
<?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_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>JAXRS-HelloJerseyExample</display-name>
<servlet>
<servlet-name>JerseyRESTService</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.dcr.javacode.rest.jersey</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JerseyRESTService</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Пара вещей я вижу неправильно.
<packaging>
в файле pom. Если это нужно развернуть в контейнер сервлетов, тогда пакет должен быть war
. По умолчанию используется jar
jersey-server
которого нет ServletContainer
. Вместо этого используйте jersey-container-servlet
Но...
Самый простой способ начать работу с Джерси - использовать архетип Maven.
В Eclipse:
File
] → [ New
] → [ Other
]Maven
] → [ Maven Project
] → Nextjersey-quickstart-webapp
. Для загрузки всех архетипов может потребоваться несколько секунд. Вы можете увидеть прогресс загрузки архетипов в небольшом индикаторе выполнения в самом нижнем правом углу IDE. Если вы не видите индикатор выполнения и нет результатов поиска, то, скорее всего, у вас нет архетипов. В этом случае следуйте инструкциям в первой части этого ответаorg.glassfish.jersey.archetypes
. Он должен по умолчанию использовать последнюю версию (на данный момент это 2.17) → NextЭто должно помочь вам запустить приложение для запуска Джерси, которое будет работать на Tomcat
code
<build> <plugins> <plugin> <groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-war-plugin </ artifactId> <конфигурация> <webXml> WebContent \ WEB-INF \ web.xml </ webXml> </ configuration> </ plugin> </ plugins> </ build> code
<packaging>war</packaging>
пом