Coding/JSP

[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] - 섹션 1~3 Trouble Shooting

서머스 2021. 7. 31. 22:34

https://www.inflearn.com/courses/lecture?courseId=325630&unitId=49576&subtitleLanguage=ko&category=questionDetail&tab=curriculum

 

정적 컨텐츠 | 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

정적 컨텐츠

www.inflearn.com

 

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 를 들으면서 직면했던 문제들과 그에 대한 해결방안을 정리하였다.

다들 그렇다시피 모두가 같은 문제를 겪는 것 같다.

 

1)

java: cannot find symbol
  symbol:   method addAttribute(java.lang.String,java.lang.String)
  location: variable model of type ch.qos.logback.core.model.Model

 

https://www.inflearn.com/community/questions/1237550/hellocontroller-%EC%98%A4%EB%A5%98-%EC%A7%88%EB%AC%B8-addattribute-%EC%98%A4%EB%A5%98?srsltid=AfmBOor3nDQmFjJ5tH2Ng3lOk0n3jfURkg5SFWzozziUe8GefgM9xLMd

 

HelloController 오류 질문(addAttribute 오... - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

 

import ch.qos.logback.core.model.Model;

model을 import시 이 패키지가 import 되는데, 이 대신 

package org.springframework.ui;
 

이걸로 수정해야 한다.

 

 

2)

빌드 시 Error: Unable to access jarfile hello-spring-0.0.1-SNAPSHOT

 

https://www.inflearn.com/community/questions/354412/build%EA%B0%80-%EC%99%84%EB%A3%8C%EB%90%98%EC%97%88%EB%8A%94%EB%8D%B0-jar%ED%8C%8C%EC%9D%BC%EC%97%90-%EC%A0%91%EA%B7%BC%ED%95%A0-%EC%88%98-%EC%97%86%EB%8B%A4%EA%B3%A0-%EB%82%98%EC%98%B5%EB%8B%88%EB%8B%A4?srsltid=AfmBOoq7qXUgLV8b9klSiyn2ZD4YFiztz-MbsuwzSYdCYVh0Vh6sSTti

 

build가 완료되었는데 jar파일에 접근할 수 없다고 나옵니다. - 인프런 | 커뮤니티 질문&답변

누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.

www.inflearn.com

 

$ ./gradlew build
$ cd build/libs
$ java -jar hello-spring-0.0.1-SNAPSHOT
Error: Unable to access jarfile hello-spring-0.0.1-SNAPSHOT

 

끝에 .jar를 붙이면 해결된다.

> java -jar hello-spring-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

 


4)

Cannot resolve class or package 'h2'

Gradle Sync도 해보고 Refresh도 해보고 껐다 켜봐도 안됐다.

 

	implementation ("org.springframework.boot:spring-boot-starter-jdbc")
	runtimeOnly ("com.h2database:h2")

 

build.gradle.kts에 직접 추가하고 다시 sync하니 됐다.

 

5)

Port 8080 was already in use

 

https://yuricoding.tistory.com/93

 

Port 8080 was already in use 에러 해결방법

개발꿀팁 Port 8080 was already in use 에러 해결방법 8080 포트를 여러프로젝트에서 사용하다 보니 아래와 같은 오류가 발생하였다. 원인 서버를 구동하려고 할 때 서버가 사용하려고 하는 port를 다른

yuricoding.tistory.com

이분의 블로그를 참고했다.

 

>lsof -i tcp:8080
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    68040  csh   59u  IPv6 0x52865a6fdd802f6b      0t0  TCP *:http-alt (LISTEN)
> kill $(lsof -t -i:8080)

 

나는 맥북을 쓰고 있어서 이렇게 사용했다.

 

 lsof(LiSt Open Files)

  • 어떤 프로세스가 어떤 파일을 열고 있는지(소켓 포함) 확인할 수 있다.
  • lsof -i tcp:8080 <- 어떤 PID가 포트를 점유 중인지
  • lsof +D /path/to/dir <- 특정 디렉터리/파일을 열고 있는 프로세스가 있는가?

 

netstat(NETwork STATistics)

  • 네트워크 상태를 전반적으로 보여주는 명령어.
  • 현재 열려 있는 TCP/UDP/RAW 소켓, 연결 상태(LISTEN, ESTABLISHED 등), 프로토콜 통계, 라우팅 테이블, 멀티캐스트 그룹 등을 확인할 수 있다.
  • netstat -tulnp <- 현재 열려 있는 포트(UDP/TCP)와 해당 PID를 확인 가능
  • 맥에서는 -p 옵션 지원 x, -anv 등으로 사용한다.
  • 최신 리눅스 배포판에서는 netstat 대신 ss를 쓴다.(상세하고 빠름)

 

ps(Process Status)

  • 현재 실행 중인 프로세스의 목록을 보여준다.
  • CPU 사용량, 메모리 사용량, 프로세스 ID(PID), 부모 프로세스 ID(PPID), 실행 명령, 실행 시간 등
  • ps aux <- 간단한 프로세스를 보고 싶을 때
  • top <- 동적으로 프로세스 상태를 보고 싶을 때