2013-07-28 3 views
0

Grails 2.2.3을 사용합니다. lib 디렉토리에 jar 파일을 넣었습니다. IDEA는 즉시 종속성을 해결했습니다. 하지만 앱을 시작하면이 라이브러리의 클래스에 NullPointerException이 표시됩니다. 2 회 이상 시도하면 java.lang.NoClassDefFoundError이됩니다. 이 문제를 해결하는 방법에 대해 많은 조언을 얻었지만 제 경우에는 아무 것도 유용하지 않았습니다.Grails lib 디렉토리가 작동하지 않습니다.

라이브러리 (mylib-1.jar)가 lib 디렉토리에 추가되었습니다. 내가

grails clean 
grails compile --refresh-dependencies 
grails refresh-dependencies 

을 시도했지만 아무것도 도움이되지

dependencies { 
    compile 'com.mylib:mylib:1' 
} 

:로 BuildConfig.groovy에서 종속성이 언급된다. 결과 war 파일에서 WEB-INF/lib로이 라이브러리를 볼 수 있지만이 war를 배포하더라도 같은 오류가 발생합니다.

어떻게 해결할 수 있습니까?

+0

그래서'/ lib' 디렉토리에'.jar' 파일이 있고'BuildConfig.groovy'에서'com.mylib : mylib : 1''을 컴파일합니까? –

+0

맞아. 하지만이 줄도 삭제 해 보았습니다. –

답변

3

NoClassDefFoundErrorClassNotFoundException을 혼동하는 것입니다. ClassNotFoundException은 원하는 클래스가 없을 때 발생하지만 클래스가있을 때 NoClassDefFoundError이되지만 그 클래스가 의존하는 클래스는 없습니다. 따라서이 jar 파일이 의존하는 다른 jar 파일이 누락되었습니다.

jar 파일을 lib 디렉토리에 수동으로 복사하는 대신 종속성 관리를 사용하는 것이 가장 좋은 이유 중 하나입니다. jar가 적절한 POM 파일을 가지고있는 Maven repo를 사용한다면, 그것들의 의존성이 지정되고, resolver는 모든 jar를 직접 찾아야하는 것이 아니라, 의존성 트리 전체를 다운로드 할 수 있습니다.

+0

고마워요, 이제 파기 방향이 있습니다. 모든 필수 종속성이 maven 아티팩트를 사용하여 연결 되었기 때문에 왜 그런지 이해할 수 없습니다. –

+0

@Mitya XMitya, JarAnalyzer를 사용하여 누락 된 항목을 찾으십시오. http://www.kirkk.com/main/Main/JarAnalyzer – rimero

관련 문제