ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring 프로젝트 회고 (2) - 자주 만났던 에러들
    BackEnd 2022. 8. 31. 02:52

    Spring을 공부하고 막 토이 프로젝트를 했을 때, 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 라는 책의 도움을 많이 받았다. 유명한 책이기도 하고, 많은 블로거분들께서 포스팅해주셔서 구글에 검색하거나 저자님의 깃허브 & 블로그에 들어가면 쉽게 내용을 찾을 수 있다. 

     

    스프링으로 지금도 프로젝트를 하고 있는데, 내가 자주 만났던 오류들을 까먹지 않기 위해 포스팅하는 글. 

     

    📌 Port 8080 was already in use ERROR

    Web server failed to start. Port 8080 was already in use.  Action:  Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

     

    위와 같은 에러가 뜨는 경우이다. 이 경우 8080 포트 사용하는 프로세스를 kill하면 된다.

    netstat -tnlp | grep 8080

    이 명령어를 치면 8080 포트를 사용하는 프로세스의 번호가 뜬다. 아래 이미지로 보면 25393임을 알 수 있다.  

    kill -15 25393

    위 명령어로 해당 프로세스를 kill하고, 다시 ./deploy.sh 파일을 실행시키면 된다. 

    사실 저기 CURRENT_PID에 해당하는 명령어를 쳤을 때 제대로 안 나오는 듯 해서 그냥 deploy.sh 실행 전에 위에 써있는 8080 포트 먼저 kill하면 별 일 없이 잘 돌아간다. 내 추측이지만, 저 CURRENT_PID 부분에 위 명령어 넣는게 더 나을 수도 있을 것 같다. 렉 현상 때문... 

     

    ⭐ EC2에서 ./deploy.sh 파일 실행할 때 ApplicationTest에서 멈춰가지고 번번히 렉걸리는 현상

    30분이상 꿈쩍도 안하길래 강제 종료 시키고 nohup.out 파일 확인해보면 내 경험상 대부분 밑에 후술할 plain.jar 문제 아니면 위의 8080 포트 문제이다. 프로세스 종료가 제대로 안 되는 문제인 것 같은데 아래 써있는 옵션 + 8080 kill 같이 쓰면 빌드 금방된다. 


    📌 No main Manifest Attribute in ~~ demo-0.0.1-SNAPSHOT-plain.jar ERROR

    spring boot 2.5 이상부터 빌드 시 발생하는 에러. 구글링하면 build.gradle파일에 다음을 추가하라고 뜬다.

    jar {
    	enabled = false
    }

    하지만 내 경우는 이미 EC2에 올라간 상황이었는데, 위의 옵션을 추가해서 커밋해도 ... 해결되지 않았다. 

    JAR_NAME=$(ls -tr $REPOSITORY/*.jar | grep -v "plain" | tail -n 1)

    그래서 구글링 끝에 다음 옵션도 설정해주었다. plain파일 자체를 실행대상에서 제외하는 방법이다. plain.jar에 main method가 없어서 발생하는 오류다. 나처럼 위의 build.gradle 옵션추가로 해결 안 될 경우 사용하면 된다. 나는 EC2 상에서 plain.jar파일도 그냥 삭제했다....ㅎ

     

    📌 그 외 기타 기록용 Tip?

    - putty의 세션을 종료 시에는 exit명령어로 종료하자. 일정 시간이 지나면 세션이 자동으로 끊기긴 하지만 직접 종료하는 쪽이 빠른 접속을 위해 좋을 듯

    - Starting a Gradle Daemon, 1 busy and 6 stopped Daemons could not be reused, use --status for details

    이게 아까 위에서 언급한 렉 걸릴때마다 중지했다가 다시 빌드했다가 하면 자주 뜨는 출력문이다. gradle --stop으로 중지시킬 수 있고, 내 기억으로 이 gradle도 바로 kill되는것이 아니고 일정 시간이 지나야 사라진다고 구글링을 통해 본 것 같다. (아니면 댓글 남겨 주세요..) 

     

    아무튼 이 3가지 정도 기억하면 책과 구글링을 통해 스프링 프로젝트를 개발하는데 큰 무리 없을 것 같다. 끝!


     

    📌 참고한 블로그

     

    'BackEnd' 카테고리의 다른 글

    Spring 프로젝트 회고(1) - 회원가입  (0) 2022.07.16
Designed by Tistory.