Request processing failed;
nested exception is org.mybatis.spring.MyBatisSystemException:
nested exception is org.apache.ibatis.reflection.ReflectionException:
There is no getter for property named 'zipnum' in 'class com.team6.sts.vo.MemberVO'
VO 객체의 멤버 변수에 설정해놓은 변수명과 쿼리문 안의 파라미터 명이 달라서 생긴 오류였다. n N ..ㅎ
심각: 경로 [/sts]의 컨텍스트 내의 서블릿 [appServlet]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [Request processing failed;
nested exception is org.mybatis.spring.MyBatisSystemException:
nested exception is org.apache.ibatis.reflection.ReflectionException:
There is no getter for property named 'id' in 'class java.lang.String']을(를) 발생시켰습니다.
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/spring/action-mybatis.xml]:
Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource:
'file [C:\work_sts.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\shopTranSpring\WEB-INF\classes\mybatis\mappers\address.xml]'; nested exception is java.lang.RuntimeException:
Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException:
Error resolving class . Cause: org.apache.ibatis.type.TypeException:
Could not resolve type alias ''. Cause: java.lang.ClassNotFoundException:
Cannot find class:
오류 메세지를 보면
MyBatis의 매퍼 XML 파일(address.xml)을 파싱하는 도중에 문제가 발생했다고 한다.
java.lang.ClassNotFoundException: Cannot find class:를 보면 특정 클래스를 찾지 못했다고 한다.
매퍼 XML 파일 내에서 사용된 type alias가 잘못 지정되었을 가능성이 크다.
address.xml 파일을 확인해보자.
VO 클래스를 불러오는 과정과 반환 타입을 설정하는 부분 오타 실수가 있었다..ㅎ 가장 많이 내는 오타로 인한 실수 주의하자!
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/spring/action-mybatis.xml]:
Invocation of init method failed;
nested exception is java.io.FileNotFoundException: class path resource [mybatis/model/parcelConfig.xml] cannot be opened because it does not exist
오류 메세지를 보면
'sqlSessionFactory' 라는 이름의 bean을 생성하는 도중 문제가 발생했다고 한다.
java.io.FileNotFoundException 오류라고 나오는 것을 보니 해당 파일을 찾지 못하는 상황이다.
그리고 class path로 지정한 resource 경로인 [mybatis/model/parcelConfig.xml] 가 존재하지 않는다고 나온다.
오류 코드는 javax.servlet.jsp.JspException cannot be resolved to a type 이와 같았고 찾아보니 jstl 라이브러리가 제대로 설치되지 않은 탓이라고 하여 혹여나 하고 버전이 맞지도 않는 jstl.jar파일도 넣어보고 서버 맵핑의 문제일 수도 있다고 생각하여 server파일도 몇번이나 지웠다가 다시 연결해줬는데도 오류는 해결되지 않았다.
이틀 동안 오류를 잡지 못하고 있다가 jar파일들을 살펴보다 jsp-api.jar파일을 발견했고 본능적으로 느꼈다.
아...이거구나.. jsp파일에서 오류가 나면 해당 부분과 관련 있는거 부터 찾아봐야지..! 바보..
오류코드가 이상하다는 걸 알면서도 그 하나만 보고 있었다. lib파일에 추가해줬더니 귀신같이 오류 코드가 사라졌다.. 이틀을 버렸지만 다음에 이런 오류 마주치면 시간 버릴 일은 없을것 같다. 다음에 이런 비슷한 오류가 나오면 좀 더 현명하게 오류를 잡아 낼 수 있을 것 같다.
해결 방법
프로젝트 파일의 Webcontent > lib 폴더에 jsp-api.jar 파일을 추가해주면 된다.