2011-03-31 1 views
5

내 문제는 내가 웹 응용 프로그램이 내장 6. 내 서블릿이 내 응용 프로그램에서 클래스를로드하는 데 실패하고를 throw 보스에 WAR 파일로 배포해야한다는 것입니다 JBoss의 6 WAR의 WEB-INF가/classes 폴더에있을 때 NoClassDefFoundError. 않는 NoClassDefFoundError는 클래스

나는이 클래스는 WAR 파일의 올바른 위치에 있는지 확인했다. 모든 응용 프로그램 클래스는 WEB-INF/classes 폴더에 있고, 서블릿 클래스는 장애없이 실행됩니다. 사실, 응용 프로그램의 다른 측면이 뛰어 나기 때문에 클래스 패스에없는 것이 바로이 클래스 인 것 같습니다.

보스는 JDK 1.6_21에서 실행되고, 응용 프로그램이 잘 문제가되지해야한다, JDK 1.6_24로 지어진?

은 또한이 응용 프로그램은 이클립스 내에서 로컬 잘 실행, 나는 별도의 톰캣 7 WAR 파일을 배포하고 글래스 피쉬 3 서버 때 모두 문제없이이 클래스를 찾을 수 있습니다.

아무도 지금 당장 뭔가 잘못 알지도 모른다고 생각하지 않습니다. 누군가가 이런 일이 발생하기 전에 일어난 일을 경험한다면 나에게 좋은 조언을 전하거나 클래스 패스 문제에 대해 깊이 들어갈 수있는 좋은 도구를 알고 있다면 공유하십시오.

+0

불평하는 클래스는 무엇입니까? JBoss는 이미 시스템/공유 jar에이 클래스를 제공하고 있으며, 이는 여러분의 전쟁에서 클래스와 충돌합니다. 솔루션이 없으므로 JBoss의 클래스 로딩 및 격리 문제를 해결하는 것에 대한 나의 동정심 만이 재미 있거나 쉽지 않습니다. –

+0

내 수업입니다. 제이 보스는 포장을하지 않았을 것입니다. 커피를 집어 들고있는 동안 제 사무실에서 엿보고 그것을 훔쳐 가지 않으면 안됩니다. –

답변

7

NoClassDefFoundError 클래스는 "로드"했지만, 클래스 정의가 빌드 할 수 없습니다 것을 의미한다. 일반적으로 클래스의 정적 초기화에 예외가있을 때 발생합니다. 정적 초기화 중에 예외가 로그 파일에보고되지 않는 AppServer에서 두 번 이상 보았습니다.

확인 정적 블록과 예외의 잠재적 인 원인을 실패 클래스의 정적 속성 초기화.

JBoss와 WebSphere에서 또 다른 원인은 웹 응용 프로그램이 응용 프로그램 서버의 라이브러리 (예 : servlet.jar 또는 기타)와 충돌하는 라이브러리를 배포하고 있다는 것입니다. 일반적으로 문제가되는 라이브러리를 제거하거나 클래스 로딩 메커니즘을 "상위 클래스"로 조정하면 문제가 해결됩니다.

희망 하시겠습니까?

+0

당신은 확실히 저에게 생각할 몇 가지를주었습니다. 좋은 팁! 조사하여 문제가 해결되는지 알려 드리겠습니다. –

+0

굉장! 정적 초기화 프로그램을 검사하는 것이 옳았습니다. 잘못 참조 된 속성 파일이 있었고 NPE가 발생했습니다. JBoss가 클래스의 정적 초기화 중에 발생할 수있는 예외를 기록하지 않는다고 결코 생각하지 못했을 것입니다. –

+0

감사합니다! NoClassDefFoundError는 클래스가로드되지 않았다는 것을 의미한다고 생각했습니다. 이것은 눈을 뜨게합니다. – anton1980

관련 문제