My application works fine and runs in browser via superDev. But when I try to deploy it to Heroku it gives me an error related to compileGWT:
> Task :core:compileJava
Note: /tmp/build_8848bf21/core/src/com/mygdx/game/Entity/Player.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
> Task :core:processResources NO-SOURCE
> Task :core:classes
> Task :core:jar
> Task :html:compileJava
> Task :html:processResources NO-SOURCE
> Task :html:classes
> Task :html:addSource
> Task :html:compileGwt
[ERROR] Unexpected internal compiler error
java.lang.UnsupportedClassVersionError: jsinterop/annotations/JsProperty has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.getAnnotationClass(CompilationUnitTypeOracleUpdater.java:615)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveAnnotation(CompilationUnitTypeOracleUpdater.java:686)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveAnnotations(CompilationUnitTypeOracleUpdater.java:704)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveMethod(CompilationUnitTypeOracleUpdater.java:1097)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveClass(CompilationUnitTypeOracleUpdater.java:944)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.access$700(CompilationUnitTypeOracleUpdater.java:82)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater$CompilationUnitTypeOracleResolver.resolveClass(CompilationUnitTypeOracleUpdater.java:187)
at com.google.gwt.dev.javac.asm.ResolveTypeSignature.visitClassType(ResolveTypeSignature.java:133)
at org.objectweb.asm.signature.SignatureReader.parseType(SignatureReader.java:200)
at org.objectweb.asm.signature.SignatureReader.accept(SignatureReader.java:111)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveMethod(CompilationUnitTypeOracleUpdater.java:1151)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveClass(CompilationUnitTypeOracleUpdater.java:944)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.access$700(CompilationUnitTypeOracleUpdater.java:82)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater$CompilationUnitTypeOracleResolver.resolveClass(CompilationUnitTypeOracleUpdater.java:187)
at com.google.gwt.dev.javac.asm.ResolveTypeSignature.visitClassType(ResolveTypeSignature.java:133)
at org.objectweb.asm.signature.SignatureReader.parseType(SignatureReader.java:220)
at org.objectweb.asm.signature.SignatureReader.accept(SignatureReader.java:114)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveMethod(CompilationUnitTypeOracleUpdater.java:1151)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveClass(CompilationUnitTypeOracleUpdater.java:944)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveClass(CompilationUnitTypeOracleUpdater.java:976)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.resolveClass(CompilationUnitTypeOracleUpdater.java:912)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.addNewTypesDontIndex(CompilationUnitTypeOracleUpdater.java:415)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.addNewTypesDontIndex(CompilationUnitTypeOracleUpdater.java:493)
at com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.addNewUnits(CompilationUnitTypeOracleUpdater.java:456)
at com.google.gwt.dev.javac.CompilationState.assimilateUnits(CompilationState.java:251)
at com.google.gwt.dev.javac.CompilationState.<init>(CompilationState.java:111)
at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:540)
at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:464)
at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:423)
at com.google.gwt.dev.Precompile.precompile(Precompile.java:210)
at com.google.gwt.dev.Precompile.precompile(Precompile.java:190)
at com.google.gwt.dev.Precompile.precompile(Precompile.java:131)
at com.google.gwt.dev.Compiler.compile(Compiler.java:192)
at com.google.gwt.dev.Compiler.compile(Compiler.java:143)
at com.google.gwt.dev.Compiler.compile(Compiler.java:132)
at com.google.gwt.dev.Compiler$1.run(Compiler.java:110)
at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55)
at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50)
at com.google.gwt.dev.Compiler.main(Compiler.java:113)
[ERROR] Error saving compilation unit to cache file: /tmp/build_8848bf21/html/build/gwt/cache/gwt-unitCache/gwt-unitCache-7b9fbb59f8661539c34f46974ce5fb573aac79fc-C90BB3B791D3293DB8D5BA1AB0A974D4-0000018D318459FA
java.io.IOException: Stream Closed
at java.io.RandomAccessFile.readBytes(Native Method)
at java.io.RandomAccessFile.read(RandomAccessFile.java:377)
at com.google.gwt.dev.util.DiskCache.transferToStream(DiskCache.java:170)
at com.google.gwt.dev.util.DiskCacheToken.writeObject(DiskCacheToken.java:73)
at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1154)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:441)
at com.google.gwt.dev.javac.CachedCompilationUnit.writeObject(CachedCompilationUnit.java:230)
at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1154)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at com.google.gwt.dev.javac.PersistentUnitCacheDir$OpenFile.writeUnit(PersistentUnitCacheDir.java:373)
at com.google.gwt.dev.javac.PersistentUnitCacheDir.writeUnit(PersistentUnitCacheDir.java:194)
at com.google.gwt.dev.javac.PersistentUnitCache$BackgroundService$6.run(PersistentUnitCache.java:444)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
> Task :html:compileGwt FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':html:compileGwt'.
> Process 'command '/tmp/build_8848bf21/.jdk/bin/java'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1m 3s 5 actionable tasks: 5 executed
! ERROR: Failed to run Gradle! We're sorry this build is failing. If you can't find the issue in application code, please submit a ticket so we can help: https://help.heroku.com You can also try reverting to the previous version of the buildpack by running: $ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-gradle#previous-version
Thanks,
Heroku
Push rejected, failed to compile Gradle app. Push failed
It's my build.gradle(MyProject)
buildscript {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
google()
}
dependencies {
classpath 'org.docstr:gwt-gradle-plugin:1.1.29'
classpath 'org.gretty:gretty:3.1.0'
}
}
allprojects {
apply plugin: "eclipse"
version = '1.0'
ext {
appName = "GameFriends"
gdxVersion = '1.12.2-SNAPSHOT'
roboVMVersion = '2.3.20'
box2DLightsVersion = '1.5'
ashleyVersion = '1.7.4'
aiVersion = '1.8.2'
gdxControllersVersion = '2.2.1'
}
repositories {
mavenLocal()
mavenCentral()
google()
gradlePluginPortal()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://oss.sonatype.org/content/repositories/releases/" }
maven { url "https://jitpack.io" }
}
}
project(":html") {
apply plugin: "java-library"
apply plugin: "gwt"
apply plugin: "war"
apply plugin: "org.gretty"
dependencies {
implementation project(":core")
api "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion"
api "com.badlogicgames.gdx:gdx:$gdxVersion:sources"
api "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"
api "com.google.jsinterop:jsinterop-annotations:2.0.2:sources"
api "com.badlogicgames.gdx:gdx-box2d:$gdxVersion:sources"
api "com.badlogicgames.gdx:gdx-box2d-gwt:$gdxVersion:sources"
}
}
project(":core") {
apply plugin: "java-library"
dependencies {
api "com.badlogicgames.gdx:gdx:$gdxVersion"
api "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
}
}
It's my build.gradle(html)
gwt {
gwtVersion='2.10.0' // Should match the gwt version used for building the gwt backend
maxHeapSize="1G" // Default 256m is not enough for gwt compiler. GWT is HUNGRY
minHeapSize="1G"
src = files(file("src/")) // Needs to be in front of "modules" below.
modules 'com.mygdx.game.GdxDefinition'
devModules 'com.mygdx.game.GdxDefinitionSuperdev'
project.webAppDirName = 'webapp'
compiler {
strict = true
disableCastChecking = true
// Set the Java version for GWT compiler
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
}
import org.docstr.gradle.plugins.gwt.GwtSuperDev
import org.akhikhl.gretty.AppBeforeIntegrationTestTask
gretty.httpPort = 8080
gretty.resourceBase = project.buildDir.path + "/gwt/draftOut"
gretty.contextPath = "/"
gretty.portPropertiesFileName = "TEMP_PORTS.properties"
tasks.register('startHttpServer') {
dependsOn draftCompileGwt
doFirst {
copy {
from "webapp"
into gretty.resourceBase
}
copy {
from "war"
into gretty.resourceBase
}
}
}
task beforeRun(type: AppBeforeIntegrationTestTask, dependsOn: startHttpServer) {
// The next line allows ports to be reused instead of
// needing a process to be manually terminated.
file("build/TEMP_PORTS.properties").delete()
// Somewhat of a hack; uses Gretty's support for wrapping a task in
// a start and then stop of a Jetty server that serves files while
// also running the SuperDev code server.
integrationTestTask 'superDev'
interactive false
}
tasks.register('stage') {
dependsOn 'assemble'
}
tasks.register('superDev', GwtSuperDev) {
dependsOn startHttpServer
}
tasks.register('dist') {
dependsOn clean, compileGwt
doLast {
file("build/dist").mkdirs()
copy {
from "build/gwt/out"
into "build/dist"
}
copy {
from "webapp"
into "build/dist"
}
copy {
from "war"
into "build/dist"
}
}
}
tasks.register('addSource') {
doLast {
sourceSets.main.compileClasspath += files(project(':core').sourceSets.main.allJava.srcDirs)
}
}
tasks.compileGwt.dependsOn(addSource)
tasks.draftCompileGwt.dependsOn(addSource)
tasks.checkGwt.dependsOn(addSource)
sourceCompatibility = 1.8
sourceSets.main.java.srcDirs = [ "src/" ]
eclipse.project.name = appName + "-html"
I added compile version for GWT
compiler {
strict = true
disableCastChecking = true
// Set the Java version for GWT compiler
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
Besides I added this part
tasks.register('stage') {
dependsOn 'assemble'
}
and changed this
tasks.register('superDev', GwtSuperDev) {
dependsOn startHttpServer
}
Your Heroku build is running Java 8, but at least one of your dependencies was built for Java 11. Setting that your source/target level to 8 doesn't prevent your own computer's Java version from being able to build against code it can recognize - look into Gradle Toolchains to ensure that Gradle runs a specific version of Java itself.
You might also have luck using an older version of jsinterop-annotations - GWT 2.11 only requires 2.0.0.
See https://stackoverflow.com/a/75193700/860630 for a convenient listing of class file versions and Java versions.