일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 선형대수
- 데비안
- 서버설정
- 자료구조와함께배우는알고리즘입문
- baeldung
- d
- resttemplate
- /etc/network/interfaces
- 자료구조와 함께 배우는 알고리즘 입문
- 네트워크 설정
- network configuration
- iterator
- 코드로배우는스프링부트웹프로젝트
- 알파회계
- 리눅스
- ㅒ
- 코드로배우는스프링웹프로젝트
- GIT
- 스프링부트핵심가이드
- 처음 만나는 AI 수학 with Python
- Kernighan의 C언어 프로그래밍
- 목록처리
- 구멍가게코딩단
- 페이징
- 티스토리 쿠키 삭제
- 이터레이터
- 처음 만나는 AI수학 with Python
- 자바편
- 친절한SQL튜닝
- 스프링 시큐리티
- Today
- Total
bright jazz music
class file has wrong version 61.0, should be 55.0 본문
class file has wrong version 61.0, should be 55.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
java 버전 17을 써야 하는데 그 아래 버전을 쓰고 있어서 생기는 문제이다.
- java SE 17 = 61.0
- java SE 11 = 55.0
아래 버전의 경우 java 17 이상 버전이 필요하다.
- Spring MVC 6.0.0
- Spring Boot 3.0.0
- Spring REST DOCS 3.0.0
pom.xml 또는 gradle.build를 확인했는데 17이 필요 없는 버전이라면?
사용하려는 라이브러리가 자바 17 이상을 요구하는 것일 수도 있다.
예시)
- 스프링부트 2.7.6을 사용한다면 자바 17 이하 버전도 사용 가능하다.
- 그러나 이 환경에서 Spring REST DOCS를 사용하려면 반드시 17 이상 버전을 사용해야 한다.
해결방법)
- 스프링에서 사용하는 자바 버전을 높인다.
- 또는 사용하려는 라이브러리의 버전을 낮춘다.
내 사례)
내 경우에는 Spring Boot 2.7.6 버전 + 자바 11을 사용하면서 Spring REST Docs3.0.0을 사용하려다가 오류가 발행했다.
D:\personal\blog\src\test\java\com\endofma\blog\controller\PostControllerDocTest.java:18: error: cannot access MockMvcRestDocumentation
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
^
bad class file: C:\Users\user\.gradle\caches\modules-2\files-2.1\org.springframework.restdocs\spring-restdocs-mockmvc\3.0.0\d6b6ac3817f68f2dcf9ad4db4e00836776abb1ea\spring-restdocs-mockmvc-3.0.0.jar(/org/springframework/restdocs/mockmvc/MockMvcRestDocumentation.class)
class file has wrong version 61.0, should be 55.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
나는 라이브러리(Spring REST Docs)의 버전을 "2.0.7.RELEASE" 로 낮춰서 해결했다.
아래는 build.gradle의 //SpringRestDocs 주석 부분을 참고할 것.
/*build.gradle*/
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.6'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
//SpringRestDoc
id "org.asciidoctor.jvm.convert" version "3.3.2"
}
group = 'com.endofma'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
//SpringRestDoc
asciidoctorExt
}
repositories {
mavenCentral()
}
ext { //변수를 선언할 것이므로 파일 상부에 적어주는 것이 좋다.
//SpringRestDoc
snippetsDir = file('build/generated-snippets') //생성된 asciidoc 위치 지정
// asciidocVersion = "3.0.0" //3버전부터는 java 17이 이상이 필요하다.
asciidocVersion = "2.0.7.RELEASE"
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation' /*추가*/
//gradle 5버전부터 annotationprocessor가 사용 가능해서
// gradle 레벨에서 컴파일 할 때 필요한 querydsl클래스 파일을 생성할 수 있게 됐다.
//querydsl 관련 디펜던시
implementation 'com.querydsl:querydsl-core'
implementation 'com.querydsl:querydsl-jpa'
//annotationProcessor : 인식할 타입을 추가함
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//SpringRestDoc
//asciidocVersion = "2.0.7.RELEASE" 변수가 대입된다
asciidoctorExt "org.springframework.restdocs:spring-restdocs-asciidoctor:${asciidocVersion}"
testImplementation "org.springframework.restdocs:spring-restdocs-mockmvc:${asciidocVersion}"
}
test {
//SpringRestDoc
outputs.dir snippetsDir
}
//SpringRestDoc
asciidoctor {
inputs.dir snippetsDir
configurations 'asciidoctorExt'
dependsOn test //테스트를 먼저 수행한다
}
//SpringRestDoc
//나중에 프로젝트를 jar로 빌드할 때 ascciidoc도 포함될 수 있도록 한다.
bootJar {
dependsOn asciidoctor
from ("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
}
tasks.named('test') {
useJUnitPlatform()
}
build.gradle 파일을 수정한 뒤 gradle sync를 통해 재빌드 하면 아래와 같은 결과가 출력된다.
> Task :prepareKotlinBuildScriptModel UP-TO-DATE
Download https://repo.maven.apache.org/maven2/org/springframework/restdocs/spring-restdocs-mockmvc/2.0.7.RELEASE/spring-restdocs-mockmvc-2.0.7.RELEASE.pom, took 540 ms (2.33 kB)
Download https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/4.0.1/javax.servlet-api-4.0.1.pom, took 146 ms (15.5 kB)
Download https://repo.maven.apache.org/maven2/org/springframework/restdocs/spring-restdocs-mockmvc/2.0.7.RELEASE/spring-restdocs-mockmvc-2.0.7.RELEASE.jar, took 416 ms (20.37 kB)
Download https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/4.0.1/javax.servlet-api-4.0.1.jar, took 577 ms (95.5 kB)
Download https://repo.maven.apache.org/maven2/org/springframework/restdocs/spring-restdocs-mockmvc/2.0.7.RELEASE/spring-restdocs-mockmvc-2.0.7.RELEASE-sources.jar, took 150 ms (15.57 kB)
Download https://repo.maven.apache.org/maven2/javax/servlet/javax.servlet-api/4.0.1/javax.servlet-api-4.0.1-sources.jar, took 467 ms (203.01 kB)
BUILD SUCCESSFUL in 4s