You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Java+libGDX HTML游戏到Heroku时compileGwt报错求助

解决libGDX HTML游戏部署Heroku时的UnsupportedClassVersionError问题

核心问题分析

报错UnsupportedClassVersionError: jsinterop/annotations/JsProperty类文件版本为55.0(Java 11编译),当前运行时仅支持最高52.0版本(Java 8),本质是依赖中存在Java 11编译的Jsinterop库,但Heroku编译环境默认用Java 8运行,导致版本不兼容。

具体修复步骤

1. 全局锁定Java版本

在根项目的build.gradle中添加全局配置,确保所有子模块统一使用Java 8:

allprojects {
    apply plugin: "java"
    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    tasks.withType(JavaCompile) {
        options.encoding = "UTF-8"
    }
}

2. 强制使用Java 8兼容的Jsinterop依赖

在html模块的build.gradle中,明确指定兼容Java 8的Jsinterop版本,并强制替换可能存在的高版本依赖:

dependencies {
    // 保留原有其他依赖
    implementation 'com.google.jsinterop:jsinterop-annotations:2.0.0'
    implementation 'com.google.jsinterop:base:1.0.0'
}

configurations.all {
    resolutionStrategy.force 'com.google.jsinterop:jsinterop-annotations:2.0.0'
    resolutionStrategy.force 'com.google.jsinterop:base:1.0.0'
}

3. 配置Heroku的Java运行时

在项目根目录创建system.properties文件,指定Heroku使用Java 8:

java.runtime.version=1.8

如果打算升级到Java 11,需确保GWT版本在2.9.0及以上,同时将sourceCompatibility和targetCompatibility改为11。

4. 给GWT编译任务单独指定Java版本

在html模块的build.gradle中,为compileGwt任务指定Java 8工具链:

tasks.named('compileGwt') {
    javaLauncher = javaToolchains.launcherFor {
        languageVersion = JavaLanguageVersion.of(8)
    }
}

5. 清理缓存重新构建

  • 本地执行./gradlew clean清除旧编译文件
  • 部署前清理Heroku缓存:
heroku builds:cache:purge -a your-app-name

验证流程

  1. 本地执行./gradlew html:stage确认编译正常
  2. 推送代码到Heroku,观察compileGwt任务是否成功执行

内容的提问来源于stack exchange,提问作者Flaschix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:07:21