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
Java 8 has also been selected for my project.