회사/사내개발

intellij에서 git소스를 가져온 후 gradle build 가 되지 않을 때, run application이 정상적으로 되지 않을 때

lowellSunny 2020. 10. 22. 17:56

gitLab에서 프로젝트를 가져오는 것까지 성공 후

gradle build 인식이 되지 않아서 아무 라이브러리도 가져오지 않고, @SpringBootApplication과 같은 모든 어노테이션은 비활성화가 되어있다.

 

프로젝트 내 가장 상위폴더에 있는 .idea폴더가 프로젝트 설정을 담은 디렉토리라고 한다.

해당 디렉토리를 지운 후 프로젝트를 재시작하면 설정을 다시 읽어온다고 하는데 그대로 실행해도 되지 않는다..

===========================================================================

해결완료! 5시간정도 걸린 것 같음

 

* 해결과정

 

1. 우선 프로젝트 오픈을 다시했다. 위의 프로젝트 구조는  맨 위에 보이는 cntt-cms-order에 있는 build.gradle에서 모든 설정을 물고있기 때문에 intellij project open path를 프로젝트 최상위 경로 말고 ./cntt-cms-order로 들어가 열었다.

그렇게 하니 import가 쭉 되면서 gradle project가 인식이 된다.

( gradle이 인식이 계속 안될 경우 build.gradle 파일에서 우클릭 시 import gradle... 이라는 부분이 있다고 한다. 그걸 누르면 되는데 나는 지금 프로젝트가 정상적으로 인식되어있는 상태라 찾을 수가 없다. )

 

2. project import가 됐지만 build 하고 springBoot run할때까지는 문제가 없었지만 실행된 톰캣 포트번호로 화면에 접속하려하니 에러가 뜬다.

2020-10-22 17:41:07.210 ERROR(26004)[http-nio-38447-exec-3] [o.a.c.c.C.[Tomcat].[localhost]:185] Exception Processing ErrorPage[exceptionType=java.lang.Throwable, location=/error/default]
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping;
	at org.apache.catalina.core.ApplicationHttpRequest.setRequest(ApplicationHttpRequest.java:690)
	at org.apache.catalina.core.ApplicationHttpRequest.<init>(ApplicationHttpRequest.java:114)
	at org.apache.catalina.core.ApplicationDispatcher.wrapRequest(ApplicationDispatcher.java:917)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:358)

 

원인을 찾다보니 내가 지금 사용하고 있는 Spring boot version은 2.x.x인데

SpringBoot 2점대는 내장톰캣이 9버전을 사용한다고 한다.

현재 내가 사용중인 jdk의 servlet-api.jar가 톰캣 9.0과 호환되지 않아 발생하는 것이라고 한다.

해당 라이브러리가 존재하는 톰캣경로 : 사용중인 jdk경로\jre\lib\ext

파일탐색기에 내 jdk경로에 들어가서 확인해보니 아예 servlet-api.jar라는 라이브러리가 없다.

 

톰캣9를 다운받아보면 안에 해당 라이브러리가 있으니 그 라이브러리를 가져와서 넣어주면 된다고 한다.

(기존에도 존재하는 경우 엎어치기)

 

 

톰캣9경로\apache-tomcat-9.0.39\lib 에 들어가보면 servlet-api.jar 요 라이브러리가 있다.

이걸 복사해서 위에서 언급한 경로 (  jdk경로\jre\lib\ext ) 이쪽경로에 넣어준다.

그렇게 실행하니 바로 정상으로 실행되며 화면도 정상적으로 나온다

 

 

 

출처 : fabxoe.tistory.com/15

 

[에러]java.lang.NoSuchMethodError

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping 스프링 부트의 내장 톰캣이 서블릿과 관련한 문제를 가지면 발생한다. 톰..

fabxoe.tistory.com

오늘도 문제해결 이력을 기록해주신 블로거님들 덕분에 찝찝하지 않게 퇴근합니다