programing

java.displaces를 클릭합니다.ClassNotFoundException: com.sun.jersey.spi.container.servlet.서블릿 컨테이너

newstyles 2023. 4. 24. 22:57

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.ServletContainerImport된 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.xmljava.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.jarjaxrs-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