Exception error java.lang.IncompatibleClassChangeError when starting/upgrading Bamboo with Java version 1.8.0_05
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
Often when running or upgrading Bamboo when using Java version 1.8.0_05 you may encounter a java.lang.IncompatibleClassChangeError
exception error message.
FATAL [main] [UpgradeLauncher] Failed to upgrade Bamboo
java.util.concurrent.ExecutionException: java.lang.IncompatibleClassChangeError
at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_05]
at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_05]
Environment
Observed on Bamboo 7.2 - Bamboo 9.2. using Java 1.8.0_05.
Diagnosis
Looking at the <bamboo-home>/logs/atlassian-bamboo.log
during the Bamboo startup process, we are able to identify the Java version utilized.
INFO [main] [BootstrapLoaderListener] Starting Bamboo 9.2.1 (build #90201 Mon Feb 06 10:02:50 EST 2023) using Java 1.8.0_05 from Oracle Corporation
We can see that Bamboo tries to startup using Java 1.8.0_05
, and it throws a java.lang.IncompatibleClassChangeError error message, making Bamboo unable to start or upgrade:
FATAL [main] [UpgradeLauncher] Failed to upgrade Bamboo
java.util.concurrent.ExecutionException: java.lang.IncompatibleClassChangeError
at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_05]
at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_05]
at com.atlassian.bamboo.upgrade.UpgradeLauncher.upgradeAndStartBamboo(UpgradeLauncher.java:120) ~[atlassian-bamboo-web-9.2.1.jar:?]
at com.atlassian.bamboo.upgrade.UpgradeLauncher.contextInitialized(UpgradeLauncher.java:52) ~[atlassian-bamboo-web-9.2.1.jar:?]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4764) ~[catalina.jar:9.0.71]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5222) ~[catalina.jar:9.0.71]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[catalina.jar:9.0.71]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) ~[catalina.jar:9.0.71]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) ~[catalina.jar:9.0.71]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_05]
[...]
Caused by: java.lang.IncompatibleClassChangeError
at org.hibernate.query.criteria.internal.path.AbstractPathImpl.get(AbstractPathImpl.java:127) ~[hibernate-core-5.6.10.Final-atlassian-1.jar:5.6.10.Final-atlassian-1]
at org.hibernate.query.criteria.internal.path.AbstractPathImpl.get(AbstractPathImpl.java:189) ~[hibernate-core-5.6.10.Final-atlassian-1.jar:5.6.10.Final-atlassian-1]
at com.atlassian.bamboo.index.quicksearch.QuickSearchItemDaoImpl$1.apply(QuickSearchItemDaoImpl.java:31) ~[atlassian-bamboo-persistence-9.2.1.jar:?]
at com.atlassian.bamboo.jpa.JpaUtils$CriteriaQuery.getResultList(JpaUtils.java:189) ~[atlassian-bamboo-persistence-9.2.1.jar:?]
at com.atlassian.bamboo.index.quicksearch.QuickSearchItemDaoImpl.reIndexItem(QuickSearchItemDaoImpl.java:33) ~[atlassian-bamboo-persistence-9.2.1.jar:?]
at com.atlassian.bamboo.index.quicksearch.QuickSearchItemDaoImpl.reIndexItem(QuickSearchItemDaoImpl.java:23) ~[atlassian-bamboo-persistence-9.2.1.jar:?]
at sun.reflect.GeneratedMethodAccessor439.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.24.jar:5.3.24]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.24.jar:5.3.24]
[...]
Cause
This Java version binary is incompatible with Bamboo 7.2+.
Solution
Upgrade JDK 8 to the latest available version, or to JDK 11 for Bamboo versions 8.0 and higher. For Bamboo 9.4 and later, use JDK 17, and for Bamboo 10.1, you can use either JDK 17 or JDK 21.
JDK 11, 17, 21 and JDK 8u341 use TLS 1.3 by default causing certificate errors when connected to agents, for more details please see the documentation.