Bamboo compatibility with Java 17
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
This article explains Java 17 compatibility with Bamboo
Environment
- Bamboo 8.0 and later
- Java 17
Diagnosis
According to the Bamboo Supported Platforms page, Java 17 is supported on Bamboo 9.4 and later versions.
Running Bamboo over an unsupported Java version may cause unexpected events such, but not limited to, the ones below:
INFO | jvm 1 | 2022/07/04 12:13:32 | com.thoughtworks.xstream.converters.ConversionException: No converter available
INFO | jvm 1 | 2022/07/04 12:13:32 | ---- Debugging information ----
INFO | jvm 1 | 2022/07/04 12:13:32 | message : No converter available
INFO | jvm 1 | 2022/07/04 12:13:32 | type : java.util.concurrent.atomic.AtomicInteger
INFO | jvm 1 | 2022/07/04 12:13:32 | converter : com.atlassian.bamboo.serialization.xstream.StrippingConverter
INFO | jvm 1 | 2022/07/04 12:13:32 | message[1] : Could not initialize class net.sf.cglib.proxy.Enhancer
INFO | jvm 1 | 2022/07/04 12:13:32 | converter[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
INFO | jvm 1 | 2022/07/04 12:13:32 | message[2] : Unable to make field private static final long java.lang.Number.serialVersionUID accessible: module java.base does not "opens java.lang" to unnamed module @2f72d7e1
INFO | jvm 1 | 2022/07/04 12:13:32 | class : com.atlassian.bamboo.v2.build.CurrentBuildResultImpl
INFO | jvm 1 | 2022/07/04 12:13:32 | required-type : com.atlassian.bamboo.v2.build.CurrentBuildResultImpl
INFO | jvm 1 | 2022/07/04 12:13:32 | converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
INFO | jvm 1 | 2022/07/04 12:13:32 | path : /org.springframework.remoting.support.RemoteInvocationResult/value/context/parentBuildContext/currentBuildResult/parserError
INFO | jvm 1 | 2022/07/04 12:13:32 | line number : 1260
INFO | jvm 1 | 2022/07/04 12:13:32 | class[1] : com.atlassian.bamboo.v2.build.BuildContextImpl
INFO | jvm 1 | 2022/07/04 12:13:32 | required-type[1] : com.atlassian.bamboo.v2.build.BuildContextImpl
INFO | jvm 1 | 2022/07/04 12:13:32 | converter-type[1] : com.atlassian.bamboo.serialization.xstream.BuildContextXStreamConverter
INFO | jvm 1 | 2022/07/04 12:13:32 | class[2] : com.atlassian.bamboo.v2.build.queue.AgentQueueAccessor$QueueAccessResult
INFO | jvm 1 | 2022/07/04 12:13:32 | required-type[2] : com.atlassian.bamboo.v2.build.queue.AgentQueueAccessor$QueueAccessResult
INFO | jvm 1 | 2022/07/04 12:13:32 | class[3] : org.springframework.remoting.support.RemoteInvocationResult
INFO | jvm 1 | 2022/07/04 12:13:32 | required-type[3] : org.springframework.remoting.support.RemoteInvocationResult
INFO | jvm 1 | 2022/07/04 12:13:32 | version : not available
You may also see the following message when starting the Bamboo Server application with an unsupported Java version:
"java.lang.IllegalStateException: Unsupported Java version XX.Y.Z detected"
Solution
Using Java 17 as an application running component
Bamboo versions from 9.4 onward are the only ones that can support Java 17. This applies to Server, Agent, and Elastic Images components. If you're using a Bamboo version earlier than 9.4, use Java 8 or 11, as stated on the Supported Platforms page (make sure to select your Bamboo version from the dropdown menu at the top left corner of the page).
If you wish to upgrade your Java version as a running component, check the instructions from the following KB article: How to upgrade the Java version used by Bamboo.
Using Java 17 as a capability/requirement
Although Bamboo requires specific Java versions for its running component, Bamboo can use any accessible JDK versions for its builds that are set as a capability. This includes Java 6, 7, 8, 11, 17, 18, 20, 21, from various distributors. To accomplish that, it may be necessary to:
- Define a new JDK capability and assign them to your Jobs as Requirements
- When using a Script Task, define an updated
$JAVA_HOME
environment variable pointing to the required location before starting "java
" - Review your system
$PATH
environment variable, as it may be pointing to an unsupported Java path listed before the desired one. That usually happens when a system is patched, and a new version of Java is installed automatically.