java.displaces를 클릭합니다.ClassNotFoundException: com.sun.jersey.spi.container.servlet.서블릿 컨테이너
Jersey+Google 앱엔진을 사용하여 이틀간 간단한 hello world 앱을 만들려고 합니다.간단한 AppEngine 프로젝트에서는 다음 튜토리얼을 따라 했는데 둘 다 https://developers.google.com/appengine/docs/java/gettingstarted/creating에서 정상적으로 작동합니다.
하지만 지금 저는 Jersey를 추가하고 이 튜토리얼 http://www.vogella.com/articles/REST/article.html을 따르려고 합니다.
하지만 서버는 계속 나에게
java.displaces를 클릭합니다.ClassNotFoundException: com.sun.jersey.spi.container.servlet.서블릿 컨테이너
다음 행을 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
여기서부터 모든 jar 파일을 추가했습니다.WEB-INF/lib
이치노그리고 이틀이 지나도 아무것도 작동하지 않는다.구글에서 여러 번 검색했는데, Maven을 사용하고 있는 사람들은 어떻게든 해결했다고 합니다만, Maven을 사용하고 있지 않습니다.
라도 확인하려고요.com.sun.jersey.spi.container.servlet.ServletContainer
Import된 Import에 합니다.Jersey jars
, 이름을 com.sun.je
그래서 내 마지막 추측은 최근 저지 빌드에 약간의 패키지 재배치가 있었다는 것이다.jersey
안에 않다com.sun
지쳤기 때문에 어떤 도움이라도 주시면 감사하겠습니다.
Jersey 2(JAX-RS 2의 RI)를 다운로드했습니다.당신이 언급한 튜토리얼은 Jersey 1을 사용합니다.(여기서)에서 Jersey 1.17.1을 다운로드하면 됩니다.
1은 Jersey 1을 합니다.com.sun.jersey
, 및는, 「Jersey 2」를 사용합니다.org.glassfish.jersey
따라서 예외입니다.
, 「」도 해 주세요.init-param
부 with with with with com.sun.jersey
저지 2번지
편집
"Registering Resources and Providers in Jersey 2"에는 Jersey 2에서 클래스/인스턴스를 등록하는 방법에 대한 추가 정보가 포함되어 있습니다.
jersey 2.x 를 사용하고 있는 경우는, servlet 클래스가 변경되기 때문에, 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>
이것을 폼에 넣어라.
<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>
일식 설정 문제지 저지 문제가 아니야
이 스레드에서 ClassNotFoundException: com.sun.jersey.spi.container.servlet.서블릿 컨테이너
Eclipse 프로젝트 속성 -> 전개 어셈블리 -> 추가 -> Java 빌드 경로 엔트리 -> 그래들 종속성 -> 마침을 마우스 오른쪽 버튼으로 클릭합니다.
그래서 이클립스는 아파치가 시작되었을 때 Gradle 의존관계를 사용하지 않았다.
나도 비슷한 문제에 직면했다.다음 링크의 순서 튜토리얼에 따라 문제를 해결.
http://examples.javacodegeeks.com/enterprise-java/rest/jersey/jersey-hello-world-example/
- 주의할 점은 저지 라이브러리가 Tomcat WEB-INF/lib 폴더에 올바르게 배치되어야 한다는 것입니다.위 링크에서 언급한 이클립스 설정에 의해 자동으로 수행됩니다.종속 JAR 파일을 사용하여 WAR 파일을 만듭니다.그렇지 않으면 ClassNotFound 예외에 문제가 발생합니다.
apache-7.0.56-windows-x64\filename-filename-7.0.56\webapps\Jersey JSONE 샘플\WEB-INF\lib
"2014년 11월 23일 12:06 AM 130,458 jersey-client-1.9.jar"
2014년 11월 23일 12:06 AM 458,739 jersey-core-1.9.jar
2014년 11월 23일 12:06 AM 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/
두 링크 모두 어떻게 작동하는지를 잘 보여주고 많은 시간을 절약해 줍니다.
다음을 수행합니다.
org.glassfish.glassfish.servlet.서블릿 컨테이너
서블릿 클래스의
당신과 같은 문제가 있었습니다만, 다른 가이드를 따르고 있었습니다.http://www.mkyong.com/webservices/jax-rs/jersey-hello-world-example/
은 이 2.의 호환성)에.8를 사용하기 입니다.Jersey 1.8.x의 경우pom.xml
,에는web.xml
클래스)를 .com.sun.jersey.spi.container.servlet.ServletContainer
앞서 와 같이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(archetype)을 사용하여 다음과 같은 저지 프로젝트를 생성합니다.
mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.0
그리고 효과가 있었어! :)
빌드 경로 문제로 인해 이 오류가 발생합니다.빌드 경로에 "서버 런타임" 라이브러리를 추가해야 합니다.
"java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer"
클래스를 찾을 수 없는 예외를 해결하려면 다음 단계를 따르십시오.
[ ] 를 합니다.project --> Build Path --> Java Build Path --> Add Library --> Server Runtime --> Apache Tomcat v7.0
오늘 Jersey 1.x를 사용하고 있었는데 클래스 패스에 올바른 항아리가 있었습니다.Vogella 튜토리얼에 따라 1.x jars를 사용하고 싶은 경우, 저지 라이브러리를 WEB-INF/lib 폴더에 추가해야 합니다.이것으로 확실히 문제가 해결됩니다.
넣어야 요.jersey-bundle-1.17.1.jar
을 자유자재로 하다
<servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <!-- <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> --> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <!-- <param-name>jersey.config.server.provider.packages</param-name> --> <param-value>package.package.test</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
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.test.myproject</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
이 경우:
<servlet>
<servlet-name>Jersey REST Service</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.test.myproject</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Jersey 2.x는 com 대신 org.glassfish.jersey 패키지를 사용합니다.sun.jersey(Jersey 1.x에서 사용됨) 및 예외입니다.또한 JAX-RS 2.0 및 Jersey 2.x로 이행하면 com.sun.jersey로 시작하는 init-param은 Jersey 2.x에서 인식되지 않습니다.
maven을 사용하는 경우 pom.xml은 다음과 같습니다.
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.X</version>
</dependency>
2.X를 원하는 버전에 맞춥니다(예: 2.15).
간단한 회피책은 이클립스 전개 어셈블리에 의존관계 또는 libs가 있는지 여부를 확인하는 것입니다.아마 Tomcat을 사용하는 경우 서버가 사용하고 있는 libs를 식별하지 못할 수 있습니다.이 경우 전개 어셈블리에서 명시적으로 지정합니다.
원래 문제인 java.lang으로 돌아갑니다.ClassNotFoundException: com.sun.jersey.spi.container.servlet.서블릿 컨테이너
앞서 말한 바와 같이 JAX 2.x 버전에서는 Servlet Container 클래스가 패키지 org.glassfish.jersey.servlet으로 이동되었습니다.서블릿 컨테이너관련된 jar는 jersey-container-servlet-core.jar로 jaxrs-ri-2.2.1.zip 내에 번들되어 있습니다.
JAX RS는 zip 파일 jaxrs-ri-2.2.1.zip에 포함된 모든 jars를 WEB-INF/lib 폴더에 수동으로 복사함으로써 mvn 없이 작업할 수 있습니다.libs를 오른쪽 폴더에 복사하면 런타임에 사용할 수 있습니다.
이 작업은 이클립스를 사용하여 프로젝트를 빌드 및 배포하는 경우에 필요합니다.
pom.xml 파일에 추가해야 합니다.
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.8</version>
</dependency>
같은 에러가 발생하여 디버깅과 모든 옵션 시행에 2시간 이상 소요되었습니다.저는 Maven/POM을 사용하지 않았기 때문에 소수의 솔루션을 활용할 수 없었습니다.
마지막으로 다음과 같이 해결했습니다.tomcat/lib(WEB-INF\lib 아님) 폴더에 jars를 직접 추가하고 Tomcat을 재시작합니다.
Jersey를 사용하여 hello world 애플리케이션을 개발하려는 사람이 있다면 Jersey 문서를 따르는 것이 가장 쉬운 방법 중 하나라고 생각합니다.
https://jersey.github.io/download.html
이미 메이븐을 사용하고 있는 경우는, 몇분만에 결과를 확인할 수 있습니다.
나는 아래를 사용했다.
mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.26
기본적으로 어떤 버전의 저지를 사용하느냐에 따라 다릅니다.Jersey ver.1.X.X 를 사용하고 있는 경우,
Jersey 1은 "com"을 사용합니다.sun.jersey"와 Jersey2는 org.glassfish를 사용합니다.servlet 클래스 태그에 있습니다.또한 com.sun.jersey로 시작하는 init-param도 Jersey 2에서는 인식되지 않습니다.
그리고 모든 jar 파일을 WEB-INF lib 폴더에 추가합니다.
제 경우, Tomcat lib에 jersey-bundle jar를 추가한 후 작동했습니다.
언급URL : https://stackoverflow.com/questions/18086218/java-lang-classnotfoundexception-com-sun-jersey-spi-container-servlet-servletco
'programing' 카테고리의 다른 글
Objective-C에서 "@private"는 무엇을 의미합니까? (0) | 2023.04.24 |
---|---|
Postgre를 사용하여 동일한 쿼리의 여러 행 업데이트SQL (0) | 2023.04.24 |
Excel 테이블에서 모든 데이터 행 삭제(첫 번째 행 제외) (0) | 2023.04.24 |
Web.config 변환을 사용하여 appSettings 섹션에서 속성 값을 변경하는 방법 (0) | 2023.04.24 |
Windows Azure 웹 사이트 청소 (0) | 2023.04.24 |