본문 바로가기
java

spring boot cannot find main class

by 후린트 2020. 3. 18.
반응형

STS에서 boot dashboard를 이용하여 어플리케이션을 실행했는데 

아래와 같은 메시지가 출력되면서 실행이 안됨

기본 클래스 xxx.yyyy.bbb.Application 찾거나 로드할 수 없습니다.

 

작업한건 gradle 에서 라이브러리 몇개 추가한거 밖에 없는데

불과 1분전에 구동된 서버가 구동이 안됨

이리 저리 삽질을 하다가 6시간 뻘짓을 하다가 구글링으로 찾아냄

https://stackoverflow.com/questions/28451120/spring-boot-program-cannot-find-main-class/52005196#answer-60035629

 

Spring Boot Program cannot find main class

I have a program which runs as a Spring boot App in eclipse. The program was running fine. Then i did the following: Right click on project -> Run As -> Maven Test . This was accidental. When i ...

stackoverflow.com

 

이클립스/STS -> 상단에 Run -> Run Configurations -> Spring Boot App -> 에러가발생한 어플리케이션 

-> classpath -> Use temporary Jar to specify classpath 체크 

 

 

어플리케이션을 재시작하면 정상 구동 된다.

원인 : classpath를 구성하는 문자열의 길이가 길어서 발생하는 문제 
위처럼 임시로 jar파일을 생성하는 옵션을 추가하거나 
(테스트 코드를 작성할때에도 동일한 에러가 발생하기 때문에 불편함)

gradle을 이용해서 프로젝트를 구성하고 있는데
eclipse에서 확인해보면 참조되는 라이브러리 경로는 아래처럼 구성된다.
${GRADLE_USER_HOME}/caches/modules-2/files-2.1/${group}/${name}/${version}/${hash}/fileName.jar

참조되는 라이브러리가 많아지면 classpath 길이가 길어지게 되고 클래스를 찾을 수 없다는 에러가 발생하게 된다.

classpath를 줄일 수 있는 방법은 GRADLE_USER_HOME 디렉토리를 짧게 변경하면 어느정도 줄일 수 있다.

기본적으로 GRADLE_USER_HOME 은 윈도우 기준으로
c:\users\${userID}\.gradle 로 세팅된다. 

GRADLE_USER_HOME 변경하기 
https://hulint.tistory.com/34

반응형

'java' 카테고리의 다른 글

gradle_user_home 디렉토리 설정  (0) 2020.04.23
Springboot change timezone  (0) 2020.04.21
spring boot lazy-loading 사용시 에러  (0) 2020.01.30
springboot 핸들바 auto configuration  (0) 2019.10.08
openjdk 설치  (0) 2018.12.10