일개미 : 일상과 개발의 미학

[STS 4] 230215 이클립스&스프링 에러 해결 : No mapping found for HTTP request with URI [${/URI}] in DispatcherServlet with name 'appServlet' 본문

Developer's logs

[STS 4] 230215 이클립스&스프링 에러 해결 : No mapping found for HTTP request with URI [${/URI}] in DispatcherServlet with name 'appServlet'

9low_28 2023. 2. 15. 10:54

기존 프로젝트 소스에서 원래 포함되어있던 파일 내에서 같은 로직을 필요한 테이블과 함수명 등만 변경하여 추가했는데 URI를 호출할 수 없던 오류가 났다.......아니 왜요..?

 

No mapping found for HTTP request with URI [{/컨트롤러 내의 URI}] in DispatcherServlet with name 'appServlet'

오류 메세지 자체만 보면 여러 원인이 있다고는 하지만 나의 경우는 기존 파일에서 Controller와 Service 클래스에서 같은 코드를 적절히 네이밍하여 추가했기 때문에 보통 알려진 방법은 솔루션이 될 수 없었다.

 

게다가 톰캣 문제는 아닌 것이 app 구동은 정상적으로 되어 해당 URI호출시에만 404 에러로 나오기 때문에 톰캣에서 원인을 찾는 것은 정말 그냥 삽질만 하겠다는 것

 

 

아무튼 해결된 방법은 아래와 같다. 구글링시 다른 방법으로도 해결되지 않았다면 다음과 같이 시도해보길 바란다. 

 

 

상단 메뉴바 > Project > clean 후 App run (build 재실행 포함) 

 

project > clean 기능은 작성한 소스 파일을 지우는 것이 아니다.

이클립스가 사용하고 있던 정보나 class의 컴파일 정보를 깨끗이 백지화 시키는 기능으로 기존에 빌드된 정보 중에 꼬인 내용들이나 새로운 내용을 적용시키키 위해 기존 내용들을 정리해주는 개념이라고 보면 되겠다.

 

 

보통 xml  java 파일을 수정했는데도 반영이 안될 경우 서버(톰캣)를 종료한 후, Clean을 사용한다.

그 이유는 이클립스는 빌드할 때, 컴파일시 프로젝트 내 모든 소스코드를 컴파일 하지 않고 수정된 java파일과 그에 관련된 내용들만 컴파일 함으로써 빌드 시간을 줄이는데, 간혹 도중에 컴파일 충돌 문제가 발생하거나 자체 버그로 인하여 오류가 나타나기도 한다.

 

테스트로 찍어본 sout.
sout로 찍힌 console창 메세지

 

추가로 작성한 코드가 정상적으로 실행되었다 (위의 오류는 별개이므로 해당 글과 상관없음)

 

따라서, 수정된 코드가 제대로 반영이 안된 것일 수 있으니 어떻게 보면 별거 아니겠지만 Clean 후 실행해보는 것도 시도해볼 만한 방법이라고 생각해서 포스팅 해보았다. 

 

intelliJ에도 동일한 기능이 있을 수 있겠지만(없을 수도 있고,,) intelliJ를 사용했던 당시에는 전혀 없던 에러라 신선했고 다신 만나지 말자,,,

 

 

 

 


 

*참고 문헌

 

[spring] No mapping found for HTTP request with URI 에러

최초작성: 2018.01.12 Problem 특정 오류로 인하여 계속해서 Not Found 창이 발생하였음. WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/webop_workspace/] in DispatcherServlet with name '

devops-note.tistory.com

 

이클립스 클린(clean)기능

가끔 이클립스가 미쳐돌아갈때가있다. 있지도 않은 에러가 있다고 하거나, 잘 되던 코드가 갑자기 안된다거나, 내 눈앞에 떡하니 보이는 클래스파일을 인식을 못한다거나... 그러할때 쓰는 방법

huelet.tistory.com