TechHotoke’s diary

日々の学びについて記事としてまとめてます。

General error during conversion: Unsupported class file major version 61の対応

f:id:TechHotoke:20211216134543p:plain

環境

  • Mac BigSir11.4
  • JDK11
  • SpringBoot2.5.6

ソース

build.gradle

plugins {
    id 'org.springframework.boot' version '2.5.6'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
    runtimeOnly 'mysql:mysql-connector-java'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
}

test {
    useJUnitPlatform()
}

task npmRunBuild() {
    doFirst{
        if (!file("${rootDir}/src/frontend/node_modules").exists()) {
            "npm --prefix ${rootDir}/src/frontend install ${rootDir}/src/frontend"
                    .execute()
                    .waitForProcessOutput(System.out, System.err)
        } else {
            "npm --prefix ${rootDir}/src/frontend run build"
                .execute()
                .waitForProcessOutput(System.out, System.err)
        }
    }
}

processResources {
    dependsOn npmRunBuild
}

上記のgraldeファイルをgradle buildコマンドでビルドを行ったところ下記エラーが出てきたので対処

FAILURE: Build failed with an exception.

* Where:
Settings file '/Users/yudainoda/Documents/workspace-STS/TempleWorkSystemProto/settings.gradle'

* What went wrong:
Could not compile settings file '/Users/yudainoda/Documents/workspace-STS/TempleWorkSystemProto/settings.gradle'.
> startup failed:
  General error during conversion: Unsupported class file major version 61

  java.lang.IllegalArgumentException: Unsupported class file major version 61

調査

上記エラーに該当する事例は見つけられなかった。

似ていたのはこのあたり。

https://yusuke.blog/2021/03/04/2942

内容としてはGradle6系だとJava16以降のバージョンをサポートしていないということでした。

ただ、自分の使用しているJavaのバージョンは11かつGradleは7系だったので、該当せず。

gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip

なので、一旦バージョンに起因するエラーの説を疑い、下記のように書き換えプロジェクトの再び読み込みを行った。

distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip

結果

上記対応で問題なく起動できた。

Gradleのバージョンは新しいものに似たようなバグの報告などもあったので、今後は安定した二、三個古いバージョンのものを使うべしと思った。

参考