0

I have tried to deploy my Spring Boot Microservice to App Engine but I am facing a unsupported class version error, now I understand that App Engine only supports Java 8 (52), so I have altered my classpath to support Amazon Corretto 1.8.

However this is still not resolving the issue, I have attached the error log, Gradle file, and a screenshot of my project structure.

Thanks for your assistance.

Build.Gradle

plugins {
    id 'org.springframework.boot' version '2.4.9-SNAPSHOT'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'com.google.cloud.tools.appengine' version '2.4.1'
}

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

repositories {
    mavenCentral()
    maven { url 'https://repo.spring.io/milestone' }
    maven { url 'https://repo.spring.io/snapshot' }
}

ext {
    set('springCloudGcpVersion', "2.0.3")
    set('springCloudVersion', "2020.0.3")
}

dependencies {
    implementation 'com.google.cloud:spring-cloud-gcp-starter'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
    // https://mvnrepository.com/artifact/org.springframework/spring-hibernate
    runtimeOnly 'mysql:mysql-connector-java'
    compile 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.3.0'
}

appengine {  // App Engine tasks configuration
    deploy {   // deploy configuration
        projectId = 'REMOVEDFROMPOST'
        version = '1'
    }
}

dependencyManagement {
    imports {
        mavenBom "com.google.cloud:spring-cloud-gcp-dependencies:${springCloudGcpVersion}"
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

test {
    useJUnitPlatform()
}

Error Log

ERROR: (gcloud.app.deploy) Error Response: [9] Flex operation projects/involuted-earth-319307/regions/australia-southeast1/operations/8bc834ca-ed86-4902-b756-c066de46a592 error [FAILED_PRECONDITION]: An internal error occurred while processing task /app-engine-flex/flex_await_healthy/flex_await_healthy>2021-07-15T00:44:37.759Z7868.fq.2: Start command: java -showversion -agentpath:/opt/cdbg/cdbg_java_agent.so=--log_dir=/var/log/app_engine,--alsologtostderr=true -Xms491M -Xmx491M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:+PrintCommandLineFlags -jar app.jar
-XX:InitialHeapSize=514850816 -XX:MaxHeapSize=514850816 -XX:+ParallelRefProcEnabled -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC 
I0715 00:34:51.878021    27 jvmti_globals.cc:333] Build time: May 11 2021 11:14:19
I0715 00:34:51.886219    27 jvmti_agent.cc:159] Java debuglet initialization started
I0715 00:34:51.886591    27 jvmti_agent.cc:193] Java debuglet initialization completed
I0715 00:34:52.923115    27 jvmti_agent.cc:204] Java VM started
I0715 00:34:52.951536    27 jvmti_agent.cc:214] JvmtiAgent::JvmtiOnVMInit initialization time: 28419 microseconds
I0715 00:34:52.951678    38 jvmti_agent_thread.cc:95] Agent thread started: CloudDebugger_main_worker_thread
I0715 00:34:52.951957    38 jvm_internals.cc:370] Loading internals from /opt/cdbg/cdbg_java_agent_internals.jar
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0+deb9u1-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

I0715 00:34:54.200525    38 jvmti_agent.cc:365] Initializing Cloud Debugger Java agent version: 2.27
I0715 00:34:54.229882    38 jni_logger.cc:31] Initializing ClassPathLookup, default classpath: true, extra classpath: []
I0715 00:34:54.407919    38 jni_logger.cc:31] Total size of indexed resources database: 3282 bytes
I0715 00:34:54.463330    38 jvm_internals.cc:131] ClassPathLookup constructor time: 262738 microseconds
I0715 00:34:54.476171    38 yaml_data_visibility_config_reader.cc:67] debugger-blocklist.yaml was not found.  Using default settings.
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/example/demo/DemoApplication 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)
(gcloud.app.deploy) Error Response: [9] Flex operation projects/involuted-earth-319307/regions/australia-southeast1/operations/8bc834ca-ed86-4902-b756-c066de46a592 error [FAILED_PRECONDITION]: An internal error occurred while processing task /app-engine-flex/flex_await_healthy/flex_await_healthy>2021-07-15T00:44:37.759Z7868.fq.2: Start command: java -showversion -agentpath:/opt/cdbg/cdbg_java_agent.so=--log_dir=/var/log/app_engine,--alsologtostderr=true -Xms491M -Xmx491M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:+PrintCommandLineFlags -jar app.jar

    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    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:418)
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
I0715 00:34:55.041610    27 jvmti_agent.cc:222] Java VM termination
I0715 00:34:55.483172    38 jvmti_agent_thread.cc:99] Agent thread exited: CloudDebugger_main_worker_thread
I0715 00:34:55.483448    27 worker.cc:113] Debugger threads terminated
I0715 00:34:55.483536    27 jvmti_agent.cc:236] JvmtiAgent::JvmtiOnVMDeath cleanup time: 441933 microseconds


> Task :appengineDeploy FAILED

My project structure in Intellij

Project Structure

Java 8 has also been selected for my project.

  • You've added a 1.8 JDK, but have you actually selected it for your Project? – tgdavies Jul 15 '21 at 01:30
  • no i dont think I have, can you point me to a resource that explains how to do it in intellij – Javedullah Ahmadi Jul 15 '21 at 01:35
  • In the dialog you have screen shotted, click on 'Project' and then choose the JDK in the 'Project SDK:' dropdown – tgdavies Jul 15 '21 at 01:36
  • I have just tried that but am still getting the same error. – Javedullah Ahmadi Jul 15 '21 at 02:02
  • UnsupportedClassVersionError mainly occurs when Java Virtual Machine(JVM) accesses a class file that was compiled using a different Java version than the currently supported one. There are these other two questions for the same issue: [1]: https://stackoverflow.com/questions/10382929/how-to-fix-java-lang-unsupportedclassversionerror-unsupported-major-minor-versi [2]: https://stackoverflow.com/questions/58125830/has-been-compiled-by-a-more-recent-version-of-the-java-runtime-class-file-versi – Divyani Yadav Jul 16 '21 at 13:38
  • There is this Codelab[1] documentation available for deploying spring boot to the app engine.[1]https://codelabs.developers.google.com/codelabs/cloud-app-engine-springboot#0 – Divyani Yadav Jul 16 '21 at 13:38

0 Answers0