2011-01-14 7 views
6

나는 나를 도울 수있는 글을 찾을 수 없으므로 찾으려고 노력했다.파일이있을 때 java.lang.NoClassDefFoundError

JBoss4 서버에 귀를 배치하고 있는데 새 프로젝트를 추가 한 이후로이 문제가 발생하기 시작했습니다.

이 새 프로젝트는 Eclipse에서 Java 프로젝트로 정의되어 있으며 EAR 프로젝트는 종속성에 따라 프로젝트 중 하나 인 새 Java 프로젝트가있는 EJB 프로젝트가 있습니다. Eclipse를 통해 JBoss에 로컬로 배포하는 경우에는 아무런 문제가 없습니다 모든 것이 원활하게 진행됩니다

그러나 테스트 환경 (외부 이클립스)에서 JBoss에 배포 할 때 새 Java 프로젝트에 정의 된 클래스 중 하나에서 java.lang.NoClassDefFoundError를 계속 가져 왔습니다.

jar (EJB 프로젝트)에 도착하기 위해 EAR 파일을 살펴본 다음 jar 파일 내부에서 새 Java 프로젝트의 디렉토리 구조와 모든 클래스 파일을 볼 수 있습니다. 불평하는 클래스는 EAR-> JAR 내부에 있으며, 찾고있는 정확한 구조와 일치합니다.

나는 내가 볼 수있는 다른 무엇을 잃었습니다.

모든 포인터가 크게 감사드립니다!

감사합니다.

+0

...

이클립스는 JAR 파일에있는 클래스와 BuildPath에 관련 프로젝트 덕분에 알고 있었다, 그래서 IDE에 오류가 발생했습니다,하지만 이러한 클래스를 어디서 찾을 수 있는지 JBoss 서버 몰랐어요 모든 것과 그것도 여전히 나에게 같은 예외를 준다. –

+0

나는이 스레드에 회신하는 것을 잊었다 - 업데이트로서 : 나는 그 문제가 무엇인지를 발견했다. 그것은 어리석은 것이었다. 어떤 시점에서, 나는 패키지 이름을 문자를 대문자로 바꿉니다. 예.packagename에서 packageName으로 - 그리고 어딘가에 따라 일부 클래스 파일은 여전히 ​​이전 이름 ​​(대문자 사용하지 않음)으로 참조하므로 NoClassDefFoundError가됩니다. –

답변

6

일부 클래스가 컴파일되는 방식에 불일치가있는 경우이 오류가 자주 발생합니다. 예를 들어, Java 컴플라이언스 레벨을 설정하지 않고 JDK의 이후 버전에서 일부 클래스를 컴파일하고 이전 버전으로 실행중인 경우 당신이 당신의 클래스

+0

Funnily, 문제는 내가 패키지 이름을 일부 대문자로 된 문자는 대문자가 아닌 문자로 대문자로 변환되며 그 반대의 경우도 마찬가지입니다. –

0

확인하십시오. 이런 구조?

myapp.ear 
|+ META-INF 
    |+ applications.xml and jboss-app.xml 
|+ myapp.war 
    |+ web pages and JSP /JSF pages 
    |+ WEB-INF 
     |+ web.xml, jboss-web.xml, faces-config.xml etc. 
     |+ lib 
     |+ tag library JARs 
     |+ classes 
     |+ servlets and other classes used by web pages 
|+ myapp.jar 
    |+ EJB3 bean classes 
    |+ META-INF 
     |+ ejb-jar.xml and persistence.xml 
|+ lib 
    |+ Library JARs for the EAR 

그렇지 않은 경우, 귀마개 파일을 다시 포장해야합니다.

+0

그게 구조가되는 방법입니다.하지만 EJB jar에서는 persistence.xml이 있습니다. ejb-jar.xml 대신 –

0

META-INF/MANIFEST.MF에 "클래스 경로 :"을 확인하십시오.

+0

클래스 경로가 비어 있습니다. –

+0

"Class-Path : dependencyA.jar dependencyB.jar"와 같은 종속 항아리를 작성하십시오. –

1

을 컴파일하는 방법을

나의 제안은 당신이 보스를 실행하는 JDK를 확인하는 것입니다, 당신은

1

I 여러 전쟁/귀 파일이있는 경우이 인해 클래스 로더 분리의 문제가 될 수 확인 코드가 잘 컴파일 되더라도 런타임시 JBoss 4의 ClassNotFoundException 및 NoClassDefFoundError와 같은 문제가있었습니다. 원인을 알아 내는데 4 시간이 걸렸습니다.

내 프로젝트의 BuildPath는 정상적으로 진행되었으며 실제로 JBoss의 ClassPath에 문제가있었습니다. JBoss 4.2 RunTime Server> 열기 실행 구성> 구성 편집> ClassPath> "JAR 추가"/ "프로젝트 추가"를 사용하여 JBoss에 링크 할 JAR 및 프로젝트 추가. 내가 시도

관련 문제