Spring Framework 46

[SpringBoot] JdbcSQLSyntaxErrorException: Syntax error in SQL statement

h2디비를 사용하다가 Mysql로 테스트해보려고 데이터베이스를 바꿨을 경우에 흔히 발생하는 오류이다. 해결법은 간단하다. 지금 보면 h2database의 경로를 써준것 바로 뒤에 세미콜론을 붙여서 무언가 더 써준게 있다. MODE = 어쩌구 이렇게 써져있는데 이걸 여기서 Mysql로 세팅해주는 것이다. 이렇게 해주고 실행하면 정상적으로 실행된다.

[SpringBoot] 서버 정지 시 Build cancelled while executing task 에러

가끔 스프링부트를 사용할때, 서버를 켰다가 다시 정지시켰을때 위와 같은 메시지가 뜨면서 Exception이 발생하는 경우가 있다. 코드에도 문제가 없고, 다른 여타 문제점들도 없는데 서버를 정지시킨다고 해서 빨간 문구가 잔뜩 뜨는게 좀 성가실 수 있다. 원인은 환경문제이다. gradle로 실행하게 했을 경우 발생하는 문제인데 해결법은 아주 간단하다. 윈도우의 경우 File -> Setting에 들어가면 다음과 같은 창이 뜨게 될 것이다. 그리고 여기서 밑에 보면 빨간색으로 동그라미 친 곳이 보일 것이다. 바로 여기가 Gradle로 되어 있을 경우 문제가 발생할 수 있다. 그러니 intelliJ가 실행시킬 수 있도록 설정을 바꾸어주자. 적용하고 나서 서버를 돌려도 또 똑같이 서버를 정지시키면 같은 에러가 ..

[SpringBoot] @RequiredArgsConstructor 는 정말 생성자 코드를 만들어낼까?

김영한님의 스프링 핵심 기본편강의를 보면서 lombok을 쓰면서 @RequiredArgsConstructor 을 사용하게 되었는데, 설명상으로는 필드에 final을 지정하면, 반드시 값을 지정해줘야 하니까. @RequiredArgsConstructor 라는 어노테이션이 알아서 값이 지정되야만 하는 것들을 위해서 생성자를 만들어낸다고 말씀하셨다. 과연 그럴까? (이런 의문이 든 이유는 신기해서이다... 어떻게 코드를 집어넣을 수 있는거지? ) 코드상으로 실제로 생성자가 있는 것과 정확히 일치한다고 말씀하셨다... 그래서 직접 확인해보고 싶어서 .class 파일을 디컴파일 해보았다. 디컴파일러로는 jd-gui가 가장 흔하게 쓰이는 것 같아서 다운받아서 사용했다. (그냥 검색하면 다운받는 곳이 주르르 나온다...

[SpringBoot] org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200]

김영한님의 스프링입문 강좌를 보면서 공부하던 중 오류가 발생했다. h2데이터베이스를 이용해서 스프링부트에서 사용하려고 하는데 org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200] 와 같은 에러가 발생하면서 오류가 발생했다. (회원목록을 좀 확인하려고 했는데 Whitelabel Error Page가 발생하면서 원하는 결과가 나오지 않았다.) 해결 방법은 간단하다. 스프링부트 2.4부터는 데이터베이스에 커넥션을 추가할때 spring.datasource.username=sa 를 반드시 추가해줘야 한다. (아 참고로 sa는 내가 사용하는 username이다. username을 달리 적었다면 본인껄 ..

[SpringBoot] springboot 기본 세팅부터 빌드까지 요약

빌드할때는 우선 intellij에서 돌리던 서버는 꺼주고 이후에 스프링부트 해당 폴더로 가서 (cmd로 가면 된다.) start.spring.io에서 얻은 zip파일을 해체한 곳으로 가면 된다는 소리다. 맥이나 리눅스의 경우 ./gradlew build 라고 치면 된다. 윈도우는 그냥 gradlew.bat build라고 치면 된다. 그러면 build 폴더 안에 libs라는 폴더가 생기게 된다. 그 폴더안에 들어가면 이제 jar파일이 만들어져있다. 그걸 이제 java -jar hello-spring-0.0.1-SNAPSHOT.jar 이런 식으로 써줘서 실행시키면 잘 실행되는 것을 확인할 수 있다. 만약 잘 안되면 ./gradlew clean build라고 치면 된다. clean 하고 다시 하는거다.

[SpringBoot] The import org.springframework.boot.test cannot be resolved

테스트케이스를 작성하던 도중에 에러를 만났다. @Runwith(SpringRunner.class)는 pom.xml에 dependency를 추가해주니 바로 해결됬지만. (이건 검색하면 바로 뜬다.) 어째 @SpringBootTest는 에러가 사라지지 않았다. (검색한 내용들도 별로 도움도 안됬다.) The import org.springframework.boot.test cannot be resolved 라고 출력되고 빨간줄이 갔는데, build path에서 junit을 새로 라이브러리 추가해줘도 소용없었고, clean, refresh도 소용없었다. (이건 사실 매번해도 소용없는거긴하지만 약간 기도같은 느낌... ㅋㅋ ) 아무튼 dependency만 추가해주는걸 찾아봤는데, 별 소용없었다. 그러다가 이 글..

[SpringBoot] java.lang.IllegalStateException: Transaction not active

JPA를 사용중에 이런 에러를 마주할 수 있다. persistence.xml에서 가 문제라고 추정해서 value를 create로 바꿔보기도 했는데 역시나 소용없었다. 잘 보면 JPAClient라는 내 39번째 코드에 commit()을 사용한 코드가 있는데, 그 코드가 문제가 발생한거다. 근데 왜 문제가 발생했냐면 Transaction not active.... 라고 한다. 왜 트랜잭션이 시작이 안됬다고 할까? 나는 분명 위에서 tx.begin()이라는 코드를 통해서 실행을 시켰는데? 곰곰히 생각해보았다. 무엇이 문제가 될 수 있는지. 코드 상에서 tx.begin()을 한번 했고 이후에 tx.commit() tx.commit() 즉 두번을 해줬다. 이게 문제가 될 수 있을까? 그래서 tx.commit()두..

[SpringBoot] *.jar 파일이 인식안될때

jar파일 자체가 인식이 안될때가 있다. cmd에서 직접 폴더로 찾아가서 명령어로 압축해체를 할려고 했는데, 그마저도 안되더라. (왠지는 모르겠지만... 그냥 안됨... ) 그래서 알집을 깔았다. 인식안되면 알집깔자... 알집설치해서 알집으로 진행하면 문제없이 잘된다. https://eating-coding.tistory.com/69 jar 파일 알집으로 실행되는 문제 해결을 해보자 jar 파일을 실행시키기 위해서는 해당 연결 프로그램이 Java Platform SE binary인 상태에서 실행해야 합니다. jar 파일이 알집으로 되어있으신 분들은 알집의 환경설정에 있는 파일 연결에 연결할 확장 eating-coding.tistory.com

[SpringBoot] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project

메이븐 install을 해주는데 계속 failure가 났다. 누구는 pom.xml을 run configuration에서 삭제해주래서 계속 해줬는데 소용이 없었다. 알고보니 pom.xml을 run configuration을 삭제하라는 것은 아예 failure가 났을 때가 아니라 warning 때문에 해주는 조치이기 때문에 거의 상관이 없는 조치였다. 사실 그 warning도 무시해도 된다는 글들이 몇개 있었다. 아무튼 그래서 build failure가 왜 났는지 밑에 로그를 좀 보니 Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project 라고 되어있었다. 검색해보니 아주..

[SpringBoot] Type mismatch: cannot convert from ArrayList to List

리스트에 arraylist를 할당하는 코드를 작성중이었는데, 갑자기 arraylist가 할당이 안된다고 빨간줄이 가버렸다. 분명 arraylist는 list에 들어갈 수 있는 타입인데 왜? 라고 해서 검색을 좀 해봤다. 어딘가 이상한게 있을거라고는 생각했다. arraylist가 list에 못들어가는건데 내가 착각했을거라고는 생각하지 않았다. 왜냐면 늘상 써오던거라 아닐 리가 없었다. 그래서 보니 import를 잘못해준거였다. import com.sun.tools.javac.util.List; 이걸 써줘버린 거였다. 그러니 에러가 난거다. 그래서 import java.util.List; 이걸로 바꿔주었다. 가끔씩 이런 문제가 생길땐 import있는곳을 좀 살펴봐야겠다. ctrl shift o 를 눌러서 i..

[SpringBoot] 테스트결과가 출력되지 않을 경우!

모킹과 목업에 대해 공부하던 중 테스트 케이스를 작성하게 되었는데, ctrl + shift+ o 를 눌러서 import를 해주는데 다음과 같은 창이 떴다. 그냥 Test가 있고, api.Test가 있다. 사실 저 두개가 무슨 차이가 있는지 몰라서 그냥 Test를 import해주었다. 그런데 테스트의 결과가 출력되지 않았다. 그냥 콘솔창에 아무것도 뜨지 않았다. 한참을 뒤적거린 뒤에야 api.Test를 사용해야 한다는 것을 알게 되었다. 이걸 사용했을 경우에 결과가 출력되는 것을 확인할 수 있었다....

[SpringBoot] maven filter 안뜰때

왜 항상 maven은 무언가를 하려고 하면 사람을 당황하게 만들까.... maven에서 filter가 안떠서 뭐지? 싶은 상황이 있는데, 좀 기다리면 된다. 가끔 이렇게 느리게 적용되서 지금 뭔가 잘못된건가 싶은 상황이 여러번 있었는데, 다른 탭에서는 이런 경우가 없었는데, maven관련해서 이것저것 만질때만 항상 이러는 것 같다. 왜인지는 잘 모르겠다. 아무튼! maven관련해서 무언가를 살필때, 안뜨는 것 같으면 그냥 좀 기다려보면 뜬다. ㅋㅋ 기다리면 뜬다....

[Spring] Unable to locate persistence units 에러

JPA 프로젝트에서 하이버네이트를 JPA 구현체로 사용하여 실행결과를 로그로 출력하는 프로젝트를 만들고 있었는데, 에러가 발생했다. 에러를 거슬러 올라가면서 고쳤기 때문에 그 순서대로 원인과 해결방법을 설명하겠다. 우선 가장 처음의 에러는 XML 버전 2.2를 인식할 수 없다는 에러였다. 위에 동그라미 친 곳을 보면 버전이 2.1로 되어있는 것을 알 수 있다. 내가 다시 수정했기 때문에 2.1로 적용이 가능한 것이다. 수정하기 전에는 2.2버전으로 써놓았었는데, 이때 2.2버전을 인식할 수 없다는 에러가 발생한 것이다. 그래서 다음과 같이 porm.xml을 써놓았다. 4.0.0 com.springbook.biz.board JPAProject 0.0.1-SNAPSHOT jar JPAProject http:..

[Spring] 메이븐 프로젝트 생성 maven-archetype-quickstart

메이븐 프로젝트를 만들려고 File-> New -> Maven Project를 누르고 Next를 눌러서 아래와 같은 창에 진입했다. 메인 창에 수많은 groupid가 표시되는데, 처음에는 이게 바로 표시되지 않아서 내 maven에 무언가 문제가 있다고 생각했다. 그러다가 좀 시간이 지나니 갑자기 메인창에 나타났다. 아마 적용이 느려서 그런 것 같다. 다음부터는 창에 뭐가 안뜨면 좀 기다려보자. 저번에도 이런 비슷한 일이 있어서 일부러 빙빙 돌아서 더 어려운 방법으로 적용했던 기억이 있다.

[SpringBoot] java.lang.IllegalArgumentException : Mapped Statements collection does not contain value 에러

mybatis를 통해 원하는 결과를 콘솔창에 출력해서 보려고 하는 중인데 java.lang.IllegalArgumentException 에러가 발생했다. 세부 사항을 보니 Mapped Statements collection does not contain value 라고 뜨는 것을 확인할 수 있었다. 이번 오류는 모두 오타로 인함이었다. 이전 포스팅과 연계된 포스트인데, 이전 포스팅에서는 xml문서에서 첫라인에 띄어쓰기가 들어가서 발생한 문제였다. 이번경우는 mapper에 있는 namespace에 #이 들어간 것이었다. 저 # 때문에 인식을 하지 못한 것이다. 아 그리고 sql 구문을 써줄 때 예를 들어서 insert into board(seq,title,writer,content) values((sele..

[SpringBoot] target matching "[xX][mM][lL]" is not allowed 에러 발생

스프링에서 mybatis를 사용하던 도중에 위와 같은 에러를 만났다. 너무 간단한 이유에서 발생했다. 위에 xml문을 보면 알겠지만, 맨 처음 1번째 라인에서 한칸이 띄어쓰기 되어 있어서 발생한 오류였다. 왜 한칸이 띄어져 있었는지는 잘 모르겠지만, 아마 내가 코딩하다가 스페이스바를 잘못 눌렀다거나 해서 저기 첫줄에 띄어쓰기가 한칸 적용된 것 같았다. 아무튼 주의하자. developer-ek.tistory.com/49

[SpringBoot] 이클립스에서 Mybatis 사용하기

이클립스에서 Mybatis를 사용하려고 설정을 진행하는 와중에 좀 고생을 했다. 우선 이클립스에서 orm 플러그인을 받아서 사용할 수 있다고 해서 마켓 플레이스에 들어가서 Java orm 플러그인을 찾으려고 했다. 그런데 여기서 문제가 발생했다. 마켓에서 orm 플러그인을 찾을 수가 없었다. 참조한 블로그의 설명을 따르면 마켓에서 해당 파일이 사라진 것 같다고 했다. (그런데 더보기 메뉴에서 찾아보니까 orm 플러그인이 있었는데, drag 로 끌어다가 install 하라는 설명이 있었다. 그래서 계속 드래그 했는데, 의미없는 로딩? 같은 작동만 하더니만 아무 도움도 안됬다. ) skyfox83.tistory.com/532 [에러/Spring] Java ORM Plugin 설치 0. 참고도서 - 스프링 퀵..

[Spring] JAXB2 API 사용중 어노테이션을 썼지만, import가 안될 때 !!

자바 객체를 xml 형태의 테이터로 바꾸려고 어노테이션을 써주었는데, 아무리 ctrl shift o 를 눌러도 import가 안됬다. 그래서 이상하다 싶어서 직접 import 경로를 써줬는데도 안되더라... 그래서 보니까 아예 어노테이션 자체를 인식을 하지도 못했다. 그래서 검색을 해보니 JAXB2 API는 자바6 부터 자바 8까지는 지원이 되는데, 자바 10부터는 자동으로 지원이 안된다고 한다. 그래서 따로 설치해줘야 한다고 한다. 그래서 porm.xml에 다음과 같이 적어주면 메이블 라이브러리에 추가가 되는 것을 확인할 수 있다. 이렇게 써주고 난 뒤에 import 해주면 잘 작동하는 것을 확인할 수 있다. 자바 6이후 버전에 기본으로 포함되어 있다고만 알고있었는데... 10이후부터는 지원이 끊긴 것..

[Spring] 스프링 파일 업로드에서 엑세스가 거부되었을 경우

스프링 프레임워크를 사용해서 게시판에 글을 등록하는 예제를 진행중이었다. 파일업로드를 구현하기 위해 이제 마지막으로 테스트를 해보려고 파일을 업로드 하려고 했더니 에러가 발생했다. 에러의 내용은 즉슨 엑세스가 거부되었다는 내용이었다. 이런 종류의 에러는 처음 보았는데, 검색해보니 여러 블로그에서 액세스 권한? 과 관련된 설정을 해주는 걸 볼 수 있었다. 업로드한 파일이 저장되는 위치를 C:/ 로 지정했는데, 여기에 파일을 업로드하는 것이 엑세스 거부된 것이었다. 즉 위 사진의 코드에서 보면 new File() 부분에서 경로를 C:/ 로 설정했는데, 이 경로에서 엑세스가 거부되었다. 그래서 해당 경로를 (일단 테스트해보는 것이 목적이기 때문에) 바탕화면으로 해두기로 했다. 그래서 위의 경로를 다음과 같이 ..

[Spring] Error: Could not find or load main class test

user 서비스 컴포넌트를 만드는 중이었는데, 마지막에 Client 클래스를 만들어서 최종으로 실행시키려고 했다. 원래대로라면 스프링 컨테이너가 정상적으로 구동되면서 관리자님 환영합니다.! 라는 메시지가 출력되어야 했다. 그런데 정말 무슨 짓을 해도 저 에러가 사라지지 않았다. 저 에러가 뜨기 직전에 한 행동은 한개의 일반 자바소스파일을 하나 더 만든것 뿐이다. 환경변수도 절대 건드리지도 않았고, build path 라던지 문제가 될만한 건 아무것도 건드리지 않았다. 그냥 코딩만 하고 있었다.... 그런데 갑자기 저 에러가 떠버려서 이리저리 찾아봤는데, 정말 도움이 될만한 정보를 얻지 못했다. 1. 환경변수 바꾸기 -> 확인해봤는데, 잘 설정되어 있었다. 혹시 몰라서 정석대로 다시 설정해봤고, 조금 다른..

반응형