Jersey + Google 앱 엔진을 사용하여 이틀 동안 간단한 hello world 애플리케이션을 빌드하려고합니다. 간단한 AppEngine 프로젝트의 경우이 자습서를 따랐으며 둘 다 잘 작동합니다.
https://developers.google.com/appengine/docs/java/gettingstarted/creating
https://developers.google.com/appengine/docs/java/webtoolsplatform
하지만 지금은 Jersey를 추가하고 http://www.vogella.com/articles/REST/article.html 튜토리얼을 따르려고합니다 .
하지만 서버는 계속 나에게
java.lang.ClassNotFoundException : com.sun.jersey.spi.container.servlet.ServletContainer
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>TestServer</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.test.myproject</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>
여기JAX-RS 2.1 RI bundle
에서 Jersey 를 다운로드 하고 튜토리얼에 설명 된대로 폴더 에 모든 jar 파일을 추가 했습니다. 그리고 이틀이 지난 후에도 아무것도 작동하지 않습니다. 나는 Google에서 여러 번 검색했으며 Maven을 사용하는 사람들이 어떻게 든 해결했지만 Maven을 사용하지 않고 해당 자습서를 작성한 사람도 마찬가지입니다.WEB-INF/lib
com.sun.jersey.spi.container.servlet.ServletContainer
가져온 파일에 존재 하는지 확인 Jersey jars
하기 위해이 정규화 된 이름을 Java로 작성하고 intellisense가 이름을 완성하도록했지만 intellisense를 얻을 수 없었기 com.sun.je
때문에 마지막 추측은 최신 Jersey 빌드에서 패키지 재 배열 이 있었다는 것입니다. 그리고 jersey
더 이상 내부에 없습니다 com.sun
. 나는 지 쳤고 어떤 종류의 도움을 주시면 감사하겠습니다.
답변
Jersey 2 (JAX-RS 2의 RI)를 다운로드했습니다. 참조하는 튜토리얼은 Jersey 1을 사용합니다. ( 여기 ) 에서 Jersey 1.17.1을 다운로드 하면 충분합니다.
Jersey 1은를 사용 com.sun.jersey
하고 Jersey 2는 org.glassfish.jersey
예외를 사용 합니다.
또한로 init-param
시작하는 com.sun.jersey
것은 Jersey 2에서 인식되지 않습니다.
편집하다
Jersey 2에서 리소스 및 공급자 등록 에는 Jersey 2에서 클래스 / 인스턴스를 등록하는 방법에 대한 추가 정보가 포함되어 있습니다.
답변
jersey 2.x를 사용하는 경우 서블릿 클래스가 변경되므로 web.xml에서 다른 구성이 필요합니다. 다음 구성으로 web.xml을 업데이트 할 수 있습니다.
<servlet>
<servlet-name>myrest</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>your.package.path</param-value>
</init-param>
<init-param>
<param-name>unit:WidgetPU</param-name>
<param-value>persistence/widget</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myrest</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
답변
이것을 pom에 추가하십시오.
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.17.1</version>
</dependency>
답변
Jersey 문제가 아니라 일식 설정 문제입니다.
이 스레드에서 ClassNotFoundException : com.sun.jersey.spi.container.servlet.ServletContainer
Eclipse 프로젝트 속성-> 배포 어셈블리-> 추가-> Java 빌드 경로 항목-> Gradle 종속성-> 마침을 마우스 오른쪽 버튼으로 클릭합니다.
따라서 Eclipse는 Apache를 시작할 때 Gradle 종속성을 사용하지 않았습니다.
답변
이 시도 :
org.glassfish.jersey.servlet.ServletContainer
서블릿 클래스
답변
http://www.mkyong.com/webservices/jax-rs/jersey-hello-world-example/ 다른 가이드를 따랐지만 나는 당신과 같은 문제가있었습니다 .
이상한 부분은 당신의 저지에 1.8.x를 사용 가이드 다음 때문에이 버전 간의 호환성 (2.X에 대한 1.x에서) 어떤 문제가 안된다,이 설명서에 내가 사용하고, 그입니다 pom.xml
및에 web.xml
당신이 참조 com.sun.jersey.spi.container.servlet.ServletContainer
1.x 버전 이전에 언급 한 클래스 ( ). 그래서 내가 추론 할 수 있듯이 이것이 작동해야합니다.
내 생각 엔 JDK 1.7을 사용하고 있기 때문에이 클래스는 더 이상 존재하지 않습니다.
그 후, 나는 내 대답으로 해결하려고 노력했지만 도움이되지 않았으며 오류를 다음 pom.xml
과 web.xml
같이 변경했습니다.java.lang.ClassNotFoundException: org.glassfish.jersey.servlet.ServletContainer
존재해야 할 것!
이 오류의 결과로 “새로운”솔루션을 찾았습니다. http://marek.potociar.net/2013/06/13/jax-rs-2-0-and-jersey-2-0-released/
Maven (archetypes)을 사용하여 저지 프로젝트를 생성하십시오.
mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.0
그리고 그것은 나를 위해 일했습니다! 🙂
답변
나는 또한 비슷한 문제에 직면했습니다. 아래 링크에서 단계 단계 자습서를 통해 문제를 해결했습니다.
http://examples.javacodegeeks.com/enterprise-java/rest/jersey/jersey-hello-world-example/
- 주목해야 할 가장 중요한 점은 저지 라이브러리가 TOMCAT WEB-INF / lib 폴더에 올바르게 배치되어야한다는 것입니다. 위 링크에 언급 된 Eclipse 설정에 의해 자동으로 수행됩니다. 종속 JAR 파일로 WAR 파일을 생성합니다. 그렇지 않으면 ClassNotFound 예외 문제가 발생합니다.
apache-tomcat-7.0.56-windows-x64 \ apache -tomcat-7.0.56 \ webapps \ JerseyJSONExample \ WEB-INF \ lib
“2014/11/23 오전 12:06 130,458 jersey-client-1.9.jar
2014 년 11 월 23 일 오전 12:06 458,739 jersey-core-1.9.jar
2014 년 11 월 23 일 오전 12:06 147,952 jersey-json-1.9.jar
2014/11/23 12:06 AM 713,089 jersey-server-1.9.jar “4 개 파일 1,450,238 바이트
- 두 번째 자습서에서는 JSON 출력을 생성하고 소비하는 웹 서비스를 만드는 방법에 대해 설명합니다.
http://examples.javacodegeeks.com/enterprise-java/rest/jersey/json-example-with-jersey-jackson/
두 링크 모두 작동 방식에 대한 좋은 그림을 제공하고 많은 시간을 절약했습니다.