사람마다 호불호가 좀 갈리기는 하지만 나는 익숙해져서 이젠 JRebel없이는 자바로 웹개발하기 힘든정도가 되었다. 한창 잘 쓰고 있었는데 언젠가부터(5.0 업데이트정도 쯤이 아닌가 한데 버전을 일일이 확인하지 않아서.) 톰캣을 띄울때 갑자기 JUnit관련 클래스를 찾을 수가 없다는 오류가 나오기 시작했다. 오류만 엄청 나오고 JUnit을 사용하는 코드는 톰캣에서 실행하는 코드와는 상관없으므로 톰캣을 정상적으로 잘 동작했기 때문에 귀차니즘에 처리를 안하고 미뤄두고 있었다. 하지만 빠르게 출력되는 로그에서 Exception 로그가 찍힐 때마다 본능적인 움찔거림이 발생하는 것은 어쩔수 없기에 신경이 많이 쓰여서 몇일전에 해결을 했다.
위와 같은 오류메시지가 출력된다. 이유는 정확히 모르겠지만 테스트 코드쪽의 JUnit 어노테이션들의 클래스를 로딩못해서 발생하는 오류로 보였다. 그래서 검색하다가 핫스왑에 사용할 대상폴더를 rebel.xml에서 설정할 수 있다는 것을 알게 되었다.
JRebel을 써본 사람은 알겠지만 rebel.xml은 메뉴를 통해서 프로젝트에 생성하기 때문에 사실 한번도 저 파일을 열어본적이 없다. JRebel을 버전업한 것 외에는 초기부터 rebel.xml을 건드린 적은 없는것 같은데(프로젝트를 재생성하면서 새로 추가했는지도...) 갑자기 왜 테스트 클래스쪽에서 오류가 발생하는지는 모르겠지만 <dir name="/home/outsider/projects/example/target/test-classes"> 부분을 제거하면 더이상 기존의 오류가 발생하지 않는다. 원하는 클래스가 핫스왑이 되지 않거나 불필요한 오류가 나오면 rebel.xml을 수정하면 되겠다.
혹시나 하는 생각에 한 가지 여쭙고자 글 남깁니다.
class, xml 파일 저장 시 정상적으로 WAS에 반영이 되는 반면에 jsp는 WAS에 반영이 되지 않는 현상이 있습니다.
아무래도 JRebel 설정 시
Publishing > Never publish automatically 로 하기 때문인 것 같은데..
해결 할 수 있는 방법이 있을런지요?
전 JSP를 안쓰고 프리마커를 쓰고 있는데 말씀하신 문제는 없었는데요.
http://zeroturnaround.com/forum/topic.php?id=1623
요 링크의 내용이 도움이 되시지 않을까 합니다.
아...감사합니다.
지금 집이라서 확인은 못해봤지만 알려주신 링크의 정보대로 설정을 추가하면 잘 될 것 같다는 느낌이 팍~~드네요..
감사합니다. ^^
저도 자꾸 뜨는 에러 메시지가 거슬려서 좀 찾아봤었는데요, 관련 JRebel 이슈가 보고된게 있습니다. http://zeroturnaround.com/forum/topic.php?id=2377 다음 버전에 패치될 것으로 예상되네요.
스프링의 AnnotationConfigWebApplicationContext 로 애플리케이션을 띄울때 각 클래스의 annotation들을 확인하는데, classpath에 들어가서는 안되는 테스트 클래스들이 JRebel 때문에 포함되어서 발생한 문제로 보입니다.
아~ 자세한 내용 감사합니다. 등록된 버그가 있었군요...
그냥 갑자기 그러길래 좀 있으면 해결되겠지 했는데 영 해결안되서 수동으로 처리를 했네요 ㅎ