본문 바로가기

트러블슈팅

(54)
8080 port is already used. Port 사용하는 PID 찾아서 Kill 하기 문제 애플리케이션을 실행시키는데 '8080 port is already used' 라는 에러가 났다. 문제 원인 다른 애플리케이션을 실행시키고 있는 게 없었기 때문에, 8080 port를 어디서 사용해야되는 지 알아야 했다. 아래 명령어를 터미널에 입력해서, 현재 열린 포트 목록과 PID를 확인했다. PID는 참고로 운영체제에서 사용하는 Process의 ID이다. sudo lsof -PiTCP -sTCP:LISTEN -- 실행 결과 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 524 root 43u IPv6 0xf228382879241e9d 0t0 TCP *:49195 (LISTEN) java 524 root 45u IPv6 0xf2283828792..
restdoc이 static/doc/index.html url로 나오지 않는 문제 결론부터 말하자면, Maven Plugin 순서로 인해 일어난 문제였다. 문제 src/main/doc에 index.adoc이 있음에도, static/docs/index.html로 호출할 때, restDoc이 뜨지 않는 문제가 있었다. 문제 원인 처음에 url 경로 문제인 줄 알았으나, WebMvcConfig.java에서 /static/** 으로 시작하는 url은 classpath:/static/ 디렉토리에서 정적 리소스를 찾는 설정을 확인하였다. classpath:/static/ 경로는, 기본적으로 target/classes와 매핑된다. 참고로, target은 maven으로 프로젝트를 컴파일할 때 컴파일한 결과물로 만들어지고, 애플리케이션 동작하는 것은 target에 컴파일 된 소스들로 하게 된다. 즉,..
Maven 빌드 에러 [ERROR] error: error reading C:\Users\.m2\repository\....\파일명.jar; error in opening zip file 문제 프로젝트를 세팅 후, 메이븐 빌드할 때, 아래와 같은 에러 메시지가 났다. [ERROR] error: error reading C:\Users\suresh\.m2\repository\io\zipkin\brave\brave\brave-5.9.0.jar error in opening zip file 문제 원인 메이븐이 zip 파일을 다운로드 받는 도중에 네트워크 에러가 있었나 보다. zip파일을 열 수 없기 때문에 에러가 났다. 문제 해결 .m2 > repository 에서 문제가 되었던 io > zipking > brave 디렉터리를 삭제했다. 그리고 나서, IntelliJ에서 Maven Update로 다시 brave 라이브러리를 받아왔다. Maven 빌드가 잘 되는 것을 확인했다. 참고 자료 htt..
maven.sync.dependencies 에러. Since Maven 3.8.1 http repositories are blocked. 문제 프로젝트를 메이븐 업데이트 하는 데 아래와 같은 에러가 났다. 가려진 주소들을 보면 http://로 시작하는 데, http://.. 로 된 repository를 pom.xml에 포함시킬 수 없단 의미였다. 문제 원인 maven 3.8.1 에서 아래 기능이 신규 추가되었다. Maven now disables all insecure http://* mirrors by default. 즉, http를 통해 다운로드 받던 라이브러리를 3.8.1 버전의 maven으로는 해당 기능을 이용할 수 없게된다. 문제 해결 프로젝트 내에 있는 maven.wrapper의 maven 버전은 3.8.1보다 낮은 3.5.4 였다. 그래서 아래와 같이 IntelliJ의 세팅에서 Build, Execution, Deploymen..
IntelliJ에서 Java heap space 부족으로 인한 OutOfMemory 에러 IntelliJ에서 프로젝트 빌드하는 데 아래와 같이 Java Heap Space가 부족해 OutOfMemory 에러가 났다. IntelliJ의 Setting에 들어가서, heap size를 700 -> 1500으로 2배 늘려주니 해결되었다.
Mac에 Tomcat 설치 및 IntelliJ에 톰캣 연동 레거시 프로젝트가 Spring Boot가아닌 다른 프레임워크를 사용해서, Tomcat을 설치해 Tomcat 웹 서버에 배포해서 실행시켜야 했다. Spring Boot의 경우 내부에 웹 서버가 내장되어 있지만, Spring이나 다른 옜날 프레임워크는 웹 서버가 내장되어 있지 않다. 그래서, Tomcat이라는 외부 웹 서버를 설치하여, 그 웹 서버에 실행시키고자 하는 애플리케이션을 배포해야 한다. Mac에서 Tomcat 설치 우선 Tomcat 웹 서버에 배포해야되니, Tomcat을 설치했다. Homebrew를 이용해 Tomcat@8을 설치해줬다. brew install tomcat@8 그럼 아래 경로에 Tomcat이 설치된다. /opt/homebrew/Cellar/tomcat@8/8.5.84 IntelliJ..
chromedriver 에러 해결, nvm 설치 및 zsh: command not found: nvm 에러 해결 문제 Mac에서 Node 프로젝트를 빌드하기 위해, 프로젝트에서 npm install을 아래와 같이 .../프로젝트 이름/node_modules/chromedriver 라는 에러가 났다. 문제 원인 설치한 노드의 버전과 프로젝트의 chromedriver의 버전이 맞지 않아서 생긴 문제였다. npm install을 실행하기 이전에, Node를 Homebrew를 이용해 아래 터미널로 깔았었다. #Homebrew로 Node 설치하는 명령어 brew install node 그랬더니 가장 최신의 19버전이 깔렸었다. 해당 프로젝트는 Node 10버전에서 돌아가기 때문에, Node 10버전으로 변경해주어야 했다. 참고로 프로젝트의 노드 버전은 pom.xml의 node.version을 보고 찾았다. 문제 해결 1. ..
Mac, IntelliJ에서 JDK 관련 Maven 빌드 문제. JAVA_HOME, PATH 환경변수 설정 문제 Mac에서 IntelliJ에 메이븐 프로젝트를 빌드하려고 했는데, 아래와 같은 에러가 났다. 'No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?' 메이븐을 빌드할 때, JDK 대신 JRE를 사용하고 있는 거 아니냐고 묻는 에러였다. 메이븐은 빌드할 때 JDK를 사용한다. 참고로 Java를 설치할 때 JDK를 설치해야 한다. JRE는 JAVA 실행 환경만 제공하고, JDK가 실행환경 + 개발환경을 제공한다. 메이븐의 JDK 설정이 안되어 있는 거 같아, Command + ; 를 눌러 IntelliJ 환경 설정에 들어가서 임포터의 JDK를 Mac에 설치된 1.8 JDK로 설정해주었..
JPA에서 Join 테이블 전략으로, 상속 관계인 엔터티를 Insert 시, "Cannot insert explicit value for identity column in table '테이블명' when IDENTITY_INSERT is set to OFF." 문제 문제 ResourceEntity를 상속받은 FormEntity에 데이터를 입력하여 저장하려고 했더니, 아래와 같은 에러가 났다. annot insert explicit value for identity column in table 'TX_ZIMGO_FORM' when IDENTITY_INSERT is set to OFF. 문제 원인 ResourceEntity를 상속받은 다른 엔터티들 중 AccountEntity를 살펴보았다. TX_ZIMGO_ACCOUNT의 테이블의 ID 컬럼을 살펴보니, IDENTITY가 없었다. 반대로, 문제가 되었던 TX_ZIMGO_FORM의 ID 컬럼은 IDENTITY가 있었다. 문제 해결 TX_ZIMGO_FORM의 ID 컬럼의 IDENTITY 속성을 없애주고, 테이블을 다시 생성..
JPA로 엔터티의 테이블 CREATE 시, expected "identifier" 에러 문제 JPA의 ddl-auto 속성을 create로 두어, 스프링 부트 시작 시, 메모리 임베디드 DB인 H2 Database에 Entity의 테이블을 자동 생성하고자 했다. H2 Database의 SQL 문법을 MySQL로 설정하기 위하여, properties.hibernate.dialect를 org.hibernate.dialect.MySQL5InnoDBDialect 로 설정해주었다. 그런데, 부팅하려고 하니 DDL관련 아래와 같은 에러가 발생하였다. SQL Syntax 에러라서 확인을 위해 SQL 구문을 h2-console에서 실행켰다. 그럤더니 잘 실행된다. 검색에서는 expected "identifier" 를 찾아보니, 예약어를 사용하는 경우 발생한다고 한다. 하지만, 예약어가 될 만한 것도 없는..