2013-02-22 4 views
4

jBoss-eap-5.1에서 jboss-eap-6.0으로 프로젝트를 마이그레이션 중입니다. 다음과 같이 내가 단지를 정의ClassNotFoundException com.sun.jersey.spi.container.servlet.ServletContainer

내 프로젝트 .pom 파일에서
com 
|_jersey 
    |_jersey-core 
    |_jersey-client 
    |_jersey-server 
    |_jersey-servlet 

:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-servlet</artifactId> 
    <version>1.10</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-core</artifactId> 
    <version>${jersey-version}</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>${jersey-version}</version> 
    <scope>test</scope> 
</dependency> 

을하지만, 내가 배포 할 때 나는 다음과 같이 나는 보스의 모듈 디렉토리에 저지 항아리를 정의 내가 저지 - 서블릿을 정의하지 않았을 때 나는이 오류를 얻고 있었다, 처음

13:03:29,908 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.deployment.subunit."ApiEar-2.0.0-SNAPSHOT.ear"."ApiService-2. 
0.0-SNAPSHOT.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."ApiEar-2.0.0-SNAPSHOT.ear"."ApiService-2.0.0-SNAPSHOT.war".POST_MODULE 
: JBAS018733: Failed to process phase POST_MODULE of subdeployment "ApiService-2.0.0-SNAPSHOT.war" of deployment "ApiEar-2.0.0-SNAPSHOT.ear" 
     at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:123) [jboss-as-server-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1] 

     at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA-redhat-1.jar:1.0.2.GA-redhat-1] 
     at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA-redhat-1.jar:1.0.2.GA-redhat-1] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_32-ea] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_32-ea] 
     at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32-ea] 
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer from [Modu 
le "deployment.ApiEar-2.0.0-SNAPSHOT.ear.ApiService-2.0.0-SNAPSHOT.war:main" from Service Module Loader] 
     at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.checkDeclaredApplicationClassAsServlet(JaxrsScanningProcessor.java:295) 
     at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scanWebDeployment(JaxrsScanningProcessor.java:160) 
     at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.deploy(JaxrsScanningProcessor.java:109) 
     at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:116) [jboss-as-server-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1] 

     ... 5 more 

을,하지만 약간의 검색을했고, 아마, 저지-servlet.jar 파일은 다음과 같습니다 ServletContainer 클래스에 다음과 같은 오류가 그 클래스를 포함하는 클래스. 그러나 그로 인해 오류가 해결되었습니다.

+1

저지 특정 apis를 사용하지 않는 한 AS7/JEE6에는 JAX-RS에 필요한 모든 것이 이미 있어야합니다. 먼저 저지를 없애고 JEE6/JAX-RS로 마이그레이션하려고합니다. – Tair

+1

@tair가 제안 해 주셔서 감사하지만 옵션이 아닙니다. 문자 그대로 수백 개의 서비스가 유니폼을 사용하여 실행 중이며 지금은 마이그레이션 할 수 없습니다. –

답변

1

이 종속성을 내 manifest.mf 파일에 추가하여 문제를 해결했습니다. 내 .pom 파일에서 나는 빌드 플러그인 추가 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-ear-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifestEntries> 
        <Dependencies>com.jersey.jersey-server,com.jersey.jersey-client,com.jersey.jersey-json</Dependencies> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 

내 매니페스트 파일

1

되지 않음 대답에 .JAR 필요한 파일에 대한 참조를 추가,하지만 난이 버전 10에서 저지에 구현 된 생각 라이브러리의 대대적 인 개편이 발생했을 때

+1

예, 그것이 내가 알아 낸 것입니다. 다음은 1.10에서 Servlet에 대한 링크입니다. http://jersey.java.net/nonav/documentation/1.10/user-guide.html#d4e1721 –

관련 문제