[Error ] unsupported java. your build is currently configured to use java 21.0.1 and gradle 8.7. possible solution: - use java 20 as gradle jvm: open gradle settings - open gradle wrapper settings, change `distributionurl` property to use compatible gradl

2024. 5. 3. 17:16Error

Background : 

IntelliJ에서 Springboot 프로젝트를 돌릴 때, 테스트를 돌리면 다음 에러가 발생했다.

unsupported java. your build is currently configured to use java 21.0.1 and gradle 8.7. possible solution: - use java 20 as gradle jvm: open gradle settings - open gradle wrapper settings, change `distributionurl` property to use compatible gradle version and reload the project

 

원래 프로젝트를 돌리고 테스트를 다시 돌리니까 spring-boot가 뜨면서 로그에 다음 에러가 발생했다.

java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@291a4791 testClass = jpabook.jpashop.MemberRepositoryTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers =

 

처음에는 gradle 버전이 java와 안맞아서 에러가 발생한 줄 알고 gradle을 8.5버전으로 바꿔는데도 에러가 사라지지 않았다.

 

Cause:

Test를 돌릴때만 에러가 발생한다는 점에 집중해서 solution을 찾아보니, 나는 지금 h2 데이터 베이스를 쓰고 있는데, DB와 연결이 제대로 되지 않아서 발생하는 문제였다.

 

properties.yml 파일에서 db의 url을 다음과 같이 수정해서 메모리 모드로 실행했을 때 잘 작동하는 것을 보니 DB 연결문제가 확실하다.

url: jdbc:h2:mem:testdb

 

properties.yml 전체 코드

spring:
  datasource:
#    url: jdbc:h2:tcp://localhost/~/jpashop;MVCC=TRUE # 수정 전 db url
    url: jdbc:h2:mem:testdb
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
#        show_sql: true
        format_sql: true

logging:
  level:
    org.hibernate.SQL: debug

 

Solution:

알고보니 url에서 버전이 업데이트 되어서 MVCC를 더이상 사용하지 않아서 발생하는 문제였다.

'MVCC=TRUE'를 삭제하자.

주석을 달아놓은 부분이 수정된 부분이다.

 

properties.yml 전체 코드

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpashop; #modified code
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
#        show_sql: true
        format_sql: true
logging:
  level:
    org.hibernate.SQL: debug