2017-12-12 72 views
1

이 질문은 이전에 물어 보았습니다. 그러나 저는 다른 답변에 속하지 않는 특별한 경우가 있습니다.이 JBoss 배포에서 javax.servlet 클래스에 대해 ClassNotFoundException을 수정하려면 어떻게해야합니까?

이미 제 JBoss EAP 7.x에 예상대로 패키지하고 배포하는 두 개의 웹 응용 프로그램이 있습니다. 그러나 세 번째 시도는 효과가 없습니다. 다음은 다른 두 위치와 다른 점입니다.

  1. 원래이 기능은 웹 응용 프로그램 아키 타입 (jar pancaking not war)이 아닌 표준 maven 아키타 입니다. 자동 업데이트 도구는 데이터에 대한 예약 된 업데이트를 실행합니다. 어떤 페이지도 호스팅 할 수있는 것은 아니지만 웹 응용 프로그램으로 코딩해야했습니다. 웹 응용 프로그램 서버에 배포하는 가장 쉬운 방법으로 보였으므로 현재의 지식과 코딩 기술을 고려해야합니다. 프로젝트 속성의 프로젝트 패싯 탭을 사용하여 변환했습니다.
  2. web.xml에는 서블릿이 포함되어 있지 않지만 ServletContextListener가 포함되어있어 업데이트 루프를 시작합니다. 내 전쟁 파일을 배포 할 때

, 나는 다음과 같은 오류 얻을 :

Cannot upload deployment: {"WFLYCTL0080: Failed services" => 
{"jboss.undertow.deployment.default-server.default-host./auto-update- 
tool.UndertowDeploymentInfoService" => "org.jboss.msc.service.StartException 
in service jboss.undertow.deployment.default-server.default-host./auto- 
update-tool.UndertowDeploymentInfoService: java.lang.ClassNotFoundException: 
servlet.ServletContextListener from [Module \"deployment.auto-update- 
tool.war:main\" from Service Module Loader] Caused by: 
java.lang.ClassNotFoundException: servlet.ServletContextListener from 
[Module \"deployment.auto-update-tool.war:main\" from Service Module 
Loader]"}} 

메시지의 이러한 종류의 나에게 새로운 것이 아니다,하지만 내가 고민하고 이번에는 그것을 해결하기 위해.

기본 사항 : How do I import the javax.servlet API in my Eclipse project? 나는이 지점을 따라 갔다. 내 pom 파일에 JavaEE 종속성이 있습니다. 그것은 내 프로젝트 3 가지 모두에 해당됩니다. 그들은 모두 제공 범위를 가지고 :

<dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 

내가 완전히 제거하면 maven 명령 줄에 포장 오류가 발생합니다. 난 단지 제공된 범위 라인을 제거하면, 나는 또 다른를 얻을 수 있지만, 비슷한 오류 :

Cannot upload deployment: {"WFLYCTL0080: Failed services" => 
{"jboss.deployment.unit.\"auto-update-tool.war\".POST_MODULE" => 
"org.jboss.msc.service.StartException in service 
jboss.deployment.unit.\"auto-update-tool.war\".POST_MODULE: WFLYSRV0153: 
Failed to process phase POST_MODULE of deployment \"auto-update-tool.war\" 
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: 
java.lang.ClassNotFoundException: servlet.ServletContextListener from 
[Module \"deployment.auto-update-tool.war:main\" from Service Module Loader] 
Caused by: java.lang.ClassNotFoundException: servlet.ServletContextListener 
from [Module \"deployment.auto-update-tool.war:main\" from Service Module 
Loader]"}} 

나는 또한 내가 보스 7.x에서 구현 된 버전과 동일 믿는 것을 내 javax의 의존성을 밖으로 전환하려고했습니다 :

<dependency> 
     <groupId>org.jboss.spec.javax.servlet</groupId> 
     <artifactId>jboss-servlet-api_3.1_spec</artifactId> 
     <version>1.0.1.Final</version> 
     <scope>provided</scope> 
    </dependency> 

오류 메시지는 이제 사라졌지 만 오류 메시지가 전혀 표시되지 않는 간단한 "업로드 실패"로 대체되었습니다. 나는 로그 파일을 보려고했지만 거기에는 아무것도 없었다. 그리고 여전히 다른 두 응용 프로그램이 다른 javax 종속성과 함께 작동한다는 것이 이상하다는 것을 알게되었습니다.

실종되었습니다. 여기에서 진행하는 방법에 대한 조언이 있습니까?

+0

가능한 중복 : https://stackoverflow.com/questions/7849452/classnotfoundexception-with-servletcontextlistener –

답변

0

시도가이 종속성을 추가하려면 대신

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.0.1</version> 
    <scope>provided</scope> 
</dependency>