2013-04-22 1 views
0

매우 이상한 상황이 있습니다. 나는 그들을 빌드하기 위해 tycho와 maven을 사용하고있는 eclipse 플러그인 프로젝트를 가지고있다. 프로젝트 중 하나에서 JDBC 드라이버를 사용했고이 프로젝트를 테스트 할 테스트 플러그인이 있습니다. eclipse p2 저장소에서는 com.mysql.jdbc 플러그인을 사용할 수 없었으므로 (자체 p2가 없음) jdbc 플러그인을 가져 와서 OSGi 플러그인을 작성하고 로컬 플러그인에 종속성을 추가했습니다.JUnit 테스트가 java.lang.ClassNotFoundException으로 실패합니다. Tycho 환경의 com.mysql.jdbc.Driver

여러 개의 Eclipse 작업 공간이 있습니다. 테스트 및 jdbc 플러그인을 작성한 첫 번째 작업 공간에서만 junit 테스트가 -> Junit 테스트 명령으로 실행되는 Eclipse를 사용하여 실행될 때 작동합니다.

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 

가 나는 또한 티코 통합 테스트 (MVN 통합 테스트를들이받은)를 사용하여 시도하지만하지 않습니다 때 다른 사람 또는 나에게 소스 코드를 체크 아웃하고 다른 작업 공간에서 테스트를 실행하려고,이 예외가 발생합니다 어느 쪽도 일하지 않고 나는 여전히 같은 예외를 얻는다. 이 많은 검색을 시도했지만 대답을 찾을 수 없습니다.

업데이트 : 타이코 문제가 아니라고 생각합니다. 방금 com.jdbc.mysql jar를 기반으로 Eclipse 플러그를 작성하려고했습니다. 내가 만든 작업 공간이 잘 작동하고 있습니다. 그러나 코드를 커밋하고 프로젝트를 다른 작업 영역으로 가져 오면 테스트가 중단됩니다. 모든 설정은 두 작업 공간에서 동일합니다. 다른 작업 공간에서 작업하는 경우 ClassNotFound 예외가 발생합니다!

+0

필자는 매우 비슷한 문제가 있으며 Tycho/EclipseRCP 환경에서 Junit을 사용하는 것에 대해 빠뜨린다고 생각했습니다. 그래서 지난주 나는 질문을 던졌습니다. http://stackoverflow.com/questions/16166866/how-to-follow-test-first-approach-with-equinox-osgi-tycho-eclipse-rcp-enviro 이제 저는 문제에 대한 힌트가 더 많으므로 나는 오버 렐리 스 (oberlies)의 대답에 대한 설명으로 간략하게 설명했다. 시스템/구성 수준에 문제가 있다고 가정합니다. 또한 설정과 관련하여 아래의 모든 답변은 테스트를 전혀 실행할 수없는 경우에만 도움이 될 것이라고 생각합니다. –

답변

0

Tycho는 테스트 번들의 전이 의존성을 기반으로 OSGi 런타임을 계산합니다. mysql 드라이버 번들에는 설계 시간 의존성이 없을 것입니다 (구현하는 JDBC 인터페이스에만 해당).

mysql jdbc 드라이버 번들에 테스트 런타임 종속성을 추가하십시오. 이 작업을 수행하는 방법은 http://wiki.eclipse.org/Tycho/FAQ#How_to_add_a_undeclared_dependency.3F__.28e.g..2C_OSGi_declarative_service.29을 참조하십시오.

+0

JDBC에 종속성을 추가하려고 시도했지만 불행히도이 문제가 해결되지 않았습니다. – rozagh

0

ClassNotFoundException OSGi 런타임에서 OSGi 매니페스트의 가져 오기 및/또는 내보내기 선언에 문제가 있음을 나타냅니다. 가장 빈번한 경우는 번들이 특정 패키지를 내 보내지 만 패키지의 바이너리/클래스 파일을 실제로 가지고 있지 않다는 것입니다.

Tycho 빌드에서 build.properties의 속성에 . 항목이 없으면이 오류가 쉽게 발생할 수 있습니다.

+0

감사합니다 @oberlies,하지만 그 전에 확인했습니다. 패키지가 내보내지고 빌드 속성이 올바른 것입니다. 그러나 나는 여전히 teh classNotFoundException을 얻는다! – rozagh