레이블이 Experience인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Experience인 게시물을 표시합니다. 모든 게시물 표시

2010년 8월 5일 목요일

Unitils와 DBUnit 에서 NoSuchColumnException 에러

분명히 DB에 컬럼이 존재함에도 불구하고

Unitils에서 DBUnit를 연동해서 dataset의 내용을 처리할때

아래와 같은 에러가 발생할 경우가 있다.

 

org.dbunit.dataset.NoSuchColumnException

 

이것은 라이브러리 버전의 문제일수도 있다.

 

DBUnit 2.4.7 과 Untils- DBUnit 3.1을 사용했더니 위의 문제가 발생되었다.

DBUnit 의 버전을 2.2.2 로 내리고 나니 해결이 되었다.

(pom.xml에서 빼면 자동으로 2.2.2를 포함한다)

2010년 8월 4일 수요일

java.lang.NoSuchMethodError 에러메시지

간혹 NoSuchMethodError가 발생할 경우가 있다.

 

메소드를 찾지 못해서 발생하는 에러인데

코드상, 라이브러리상에서 전혀 문제가 없는 경우 발생할 때에는

 

주로 classpath상에서 중복되는 class가 있어서 정상적으로 method를

찾지 못해서 발생하는 문제이므로 아래와 같이 조치를 해보자

  1. lib폴더에서 중복되는 jar파일의 존재를 확인한다
  2. maven의 pom.xml파일에서 dependency 부분에서 complict가 발생되는 라이브러리가

    없는지 확인해보도록 하자

 

2010년 7월 19일 월요일

Spring Test Context Framework 사용시 Type mismatch 에러

TDD기반의 프로그래밍 중 스프링의 IC를 사용할때 Spring TestContext Framework를 사용하게 된다.

 

그럴 때 편의를 위해서 어노테이션을 사용하게 되는 경우가 많은데

 

아래와 같이 테스트용 메소드 상단에 기록을 하는 것이 일반적이다.

 

@RunWith(SpringJUnit4ClassRunner.class)
// specifies the Spring configuration to load for this test fixture
@ContextConfiguration(locations={"daos.xml"})
public final class HibernateTitleDaoTests {

    // this instance will be dependency injected by type
    @Autowired   
    private HibernateTitleDao titleDao;

    public void testLoadTitle() throws Exception {
        Title title = this.titleDao.loadTitle(new Long(10));
        assertNotNull(title);
    }
}


그런데 이렇게 설정을 해놓고 실행시에 아래와 같은 오류가 발생할 경우에는

 

Type mismatch: cannot convert from Class<SpringJUnit4ClassRunner> to Class<? extends Runner>

 

설치된 JUnit 의 버전을 확인 해보자.

 

JUnit 4.4 이후의 버전을 사용하게 되면 위의 오류는 사라질 것이다.

 

설치된 JUnit 의 버전을 확인 해보자.

 

 

 

또한 위와 같이 Autowire를 설정시에는 꼭 ApplicationConext.xml 파일의 beans 설정에 defalt-autowire속성이 설정되었는지 확인해야 한다.

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" ... 중략 ...  default-autowire="byName">
 <bean id="boardDAO" class="com.naver.bbs.dao.BoardDAOImpl" />
</beans>