내가 보려고 만드는/Spring 10

[Spring MyBatis] Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

이 에러가 발생했다면 원인이 다양한데, 주된 원인은 다음과 같다. mapper id가 틀린 경우 Parameter bean의 field 명이 틀린 경우 sql.xml에서 정의된 namespace와 DAO에서 호출하는 namespace가 다를 경우 mapper가 정의되어 있지 않거나 스펠링이 틀린 경우 mapper에 정의된 namespace 명칭이 같은 application 내에 중복 될 경우 나는 mpper.xml 파일의 id와 DAOImp.java 파일에서 사용된 id가 대소문자가 일치하지 않아 발생했었다.

[500 에러] The server encountered an internal error () that prevented it from fulfilling this request. (taglib 오류)

Spring CRUD 프로젝트를 만들어보는데, 에러가 하도 많이 떠서 이젠 이 에러가 왜 발생했는지 잘 기억이 나지 않는다.. 아마 아래의 form 태그를 사용했는데 서버가 이 태그의 uri를 찾지 못하면서 발생한 에러인 것 같다. 어쨌거나 제목과 같은 에러 메세지와 함께 500 에러가 떴다면, 아래의 링크를 참고하여 해결하면 된다. 참고로 아래의 링크는 pom.xml에 dependency를 추가했는데, 만약 이 WEB-INF/lib 상에 spring-webmvc-*.jar 파일이 존재한다면 이 파일이 저장되어 있는 폴더로 가서 jar 파일을 복사한 다음에 Tomcat이 설치된 폴더의 lib 폴더로 가서 복사한 파일을 붙여넣기 해주면 된다. 보통, Tomcat lib 폴더는 C->Program Files..

[500 에러] Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/http/converter/json/MappingJackson2HttpMessageConverter

Spring으로 CRUD 프로젝트를 만드는데, 분명히 소스 파일을 복붙했는데도!! 500 에러가 떴다. 한참을 찾아보다가 spring framework와 spring-jdbc의 버전이 호환이 안돼서 그렇다는 것을 알아냈다. 원래 내가 Spring에서 쓰고 있는 버전은 3.1.1인데 붙여넣기한 소스의 jdbc의 버전은 5.1.1.이었다. 그래서 이 둘의 버전을 맞춰주었다. 먼저, 프로젝트 내에 있는 pom.xml을 열어준다. 여러 번 시도해봤는데 두 버전이 조금이라도 다르면 에러가 발생하는 것 같다. 이렇게 두 버전을 똑같이 맞춰주면 500 에러가 사라진다.

[controller] 파일이 실행되지 않는 경우

Spring으로 프로젝트를 만들었는데 패키지에도 파일에도 아무 문제가 없지만 파일이 실행되지 않는 경우가 있다. 파일 내에 에러가 있을 수도 있지만, 잘못된 패키지를 찾아가서 파일이 실행되지 않을 수도 있기 때문에 이런 경우에는 먼저 controller의 패키지 이름을 확인한다. 그 다음 프로젝트 하위의 src->main->webapp->WEB-INF->spring->appServlet 폴더에 있는 servlet-context.xml 파일을 열어서 하단에 있는 와 controller의 패키지의 이름과 일치하는지 확인한다. 만약 다를 경우 servlet-context.xml 파일의 패키지 이름을 바꿔주면 정상적으로 파일이 실행된다.

[500 에러] 절대 URI인 [http://java.sun.com/jsp/jstl/core]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다.

처음 Spring 프로젝트를 생성하고 어떠한 파일에도 손을 대지 않았는데 에러가 발생했다. 그 이유를 찾아보니 라이브러리에 jstl이 없어서 발생하는 문제라 jstl을 다운 받으라고 하는데, 라이브러리를 찾아보니 jstl.jar 파일이 있었다. 만약 jstl.jar 파일이 라이브러리에 있다면 이 파일을 복사하여 Tomcat이 설치된 폴더의 lib 폴더로 가서 복사한 파일을 붙여넣기 해주면 해결된다. 보통, Tomcat lib 폴더는 C->Program Files->Apache Software Foundation->Tomcat 9.0->lib 경로를 통해 찾을 수 있다.

[서버 run] The specified JRE installation does not exist 에러

갑자기 sts에서 run을 눌렀더니 다음과 같은 에러가 발생하면서 전혀 실행이 되지 않았다. The specified JRE installation does not exist 이런 경우에는 sts 메뉴 상단의 Window->Preferences->Server->Runtime Environment에 들어가서 현재 하고 있는 톰캣 버전을 클릭하여 Edit 버튼을 누른다. 그러면 JRE에 default JRE로 설정되어 있는 것을 볼 수 있는데, 이것을 자신이 설정한 JRE name을 클릭해주면 해결된다.

[Java Resources 에러] 엑스 표시

자바의 버전을 1.8로 바꿔준 이후로 Java Resources에 빨간 엑스가 떠있는 것을 발견했는데, 이것은 Window->Preference에서 설정해준 자바의 버전과 프로젝트 자바의 버전이 일치하지 않아서 발생하는 문제이다. 이를 해결하기 위해, 먼저 프로젝트를 우클릭하여 Properties를 클릭한다. Project Facets에 들어가서 Java의 버전을 자신이 설정한 자바의 버전과 맞춰주면 해결!

[이클립스 에러] The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

프로젝트의 Java Resource에 빨간 엑스가 떠서 이를 해결하고자 프로젝트를 우클릭하여 Maven update를 했는데 업데이트를 하고 나니 다음과 같은 에러가 떴다. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 이런 경우에는 프로젝트를 우클릭하여 Properties -> Maven의 Project Facets에 들어가 오른쪽의 Runtimes를 클릭한다. 그 후 Apache Tomcat의 체크 박스에 체크를 해주고 Apply를 해주면 깔끔하게 해결된다! 출처: simuing.tistory.com/168

[Maven install] Build Failure

어떤 이유인지 모르겠지만 잘 되던 maven install이 build failure이 뜨는 경우가 있다,, Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) 나는 위의 에러가 떴는데, 갑자기 어떤 이유로 webxml 속성이 필요하다는 것인지는 잘 모르겠지만,, 프로젝트의 pom.xml source를 다음과 같이 수정해주면 된다. maven-war-plugin 2.4 WebContent false 원래의 xml 파일에서 맨 마지막의 plugin을 추가해주었다. 또 다른 방법은 아래의 링크를 참고하면 좋다! 출처: 1004lucifer.blogspot.co..