난 아무것도 한게 없는데 왜 이런 시련이 왔을까요? 과연 무엇이 문제일까요?
원인
이름 그대로 Class가 패키지에 함께 포함되지 않아서 발생한 문제입니다. 무엇이 이 문제를 발생시켰을 까요?ADT가 업데이트되면서 의존성을 체크하는 루틴이 크게 변경되었습니다.(자세한 내용는 요기 참고하세요. Android 프로젝트 의존성 처리 방식 변경)
기존 jar를 추가하면서 이클립스에서 build path를 추가했던것 기억하시죠?
![]() |
수동 Build Path추가 |
그럼 아무런 문제가 없지 않느냐?
맞습니다. libs폴더에 기존에 jar파일들을 넣어 두셨다면 문제가 발생하지 않습니다. libs 대신에 lib 폴더(또는 다른폴더)에 jar를 넣어두었기 때문에 NoClassDefFoundError가 발생하게됩니다.
해결방법
1) 가장 쉽고 옳은 방법
기존에 jar가 들어있는 폴더이름을 libs 로 변경하세요.
폴더를 libs로 변경하신후 기존 ADT r16이하를 사용하는 개발자 분들을 위해서 수동으로 빌드패스를 추가해주셔도 좋습니다. 하지만 공동 개발자들의 수가 그리 많지 않다면 ADT를 r17로 업데이트 하는게 더 좋은 방법입니다. (ADT r17버전은 기존 버전보다 개선사항이 매우 많습니다.
http://developer.android.com/sdk/eclipse-adt.html , SDK Tools업데이트도 꼭 함께 해주세요.)
2) 쉽지만 안좋은 방법
안드로이드 팀에서는 libs폴더를 기본 jar들의 경로로 정해두고 있기때문에 앞으로도 ADT가 업데이트 될때 마다 이러한 문제들이 계속 발생할 수 있습니다. 지금 바꾸는 것이 좋습니다. 사정상 libs 폴더를 사용하지 못한다면(그럴 이유가 있을지 모르겠지만) 다음과 같이 수동으로 추가한 jar 빌드패스를 패키징시에 포함되도록 export시켜주시면 됩니다.
하지만 이 방법은 절대 권하지 않습니다. 결국은 ADT를 업데이트 하게 될것이고 프로젝트가 매번 엉망으로 꼬이게 되는 경험을 하게 되실 겁니다.
1 comment:
ㅎㅎ 어이없는 에러가 나나했더니, 이것 때문이군요. 감솨
Post a Comment