GitHub Actions单元测试报错Unsupported class file major version 55求助
解决GitHub Action中Java单元测试的"Unsupported class file major version 55"错误
先验证Java环境是否真正切换到11
首先确认setup-java步骤是否在编译、测试等依赖Java的步骤之前执行,并且环境确实生效。可以在setup-java后添加一个验证步骤:
- name: 检查Java版本 run: java -version
如果输出不是Java 11,说明setup-java的位置有误,需要把它移到所有需要Java的步骤(比如mvn test或gradle test)之前。
检查项目编译配置
报错说明存在用高于Java 11版本编译的class文件,可能是本地用高版本Java编译后提交的,或者项目编译配置未指定Java 11:
- Maven项目:修改
pom.xml中的maven-compiler-plugin配置,强制用Java 11编译:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> <release>11</release> </configuration> </plugin>
- Gradle项目:修改
build.gradle中的Java版本配置:
java { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 }
清理旧编译产物
GitHub Action的缓存或项目残留的旧class文件可能导致问题,在编译前添加清理步骤:
- Maven:
- name: 清理旧产物 run: mvn clean
- Gradle:
- name: 清理旧产物 run: ./gradlew clean
确保环境变量正确绑定
有些Runner可能存在多Java版本共存的情况,显式绑定JAVA_HOME避免版本切换:
- name: Set up Java uses: actions/setup-java@v3 id: setup-java with: distribution: 'zulu' java-version: '11' cache: 'maven' # 用Gradle就改成'gradle' - name: 绑定JAVA_HOME到环境变量 run: echo "JAVA_HOME=${{ steps.setup-java.outputs.path }}" >> $GITHUB_ENV
检查测试框架兼容性
旧版本的测试框架(比如JUnit 4.x早期版本)可能和Java 11不兼容,升级测试框架版本:
- JUnit 4升级到4.13.2及以上
- JUnit 5升级到5.7.0及以上
内容的提问来源于stack exchange,提问作者Cam
相关产品推荐
相关产品推荐

