Confluence 10.0 release beta available now

This week we released the first beta for Confluence. There are changes in this release that may directly affect third-party apps.

New in 10.0

To find out what’s in this release, check out the Confluence 10.0 beta release notes.

Get started

Download the beta from our site to start testing your app for compatibility with the changes. Be sure to take a look at our Preparing for Confluence 10.0 guide to find out what you need to do to make your app compatible. We’ll update that page regularly, so keep an eye on it to see any changes.

Reminder: for future release updates, make sure you visit the Atlassian changelog, and consider subscribing to the RSS feed.

The Atlassian Confluence team

1 Like

Hi,
I tested the previous EAPs and all worked fine. In the beta I now get this error on app install, and the app does not enable

2025-07-09 12:30:20,350 ERROR [ThreadPoolAsyncTaskExecutor::Thread 36] [internal.dependencies.startup.DependencyWaiterApplicationContextExecutor] fail Unable to create application context for [foo.bar.app-confluence-common], unsatisfied dependencies: none
 -- url: /rest/plugins/1.0/ | userName: admin | referer: http://192.168.1.66:8090/plugins/servlet/upm | traceId: 834e207797252ff7
java.lang.IllegalStateException: Unable to load cache item
	at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:75)
	at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
	at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:129)
	at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:321)
	at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:562)
	at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:407)
	at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:207)
	at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:128)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:539)
	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:311)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.invokeBeanFactoryPostProcessors(AbstractDelegatedExecutionApplicationContext.java:532)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.invokeBeanFactoryPostProcessors(AbstractDelegatedExecutionApplicationContext.java:451)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.invokeBeanFactoryPostProcessors(AbstractDelegatedExecutionApplicationContext.java:359)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$3.run(AbstractDelegatedExecutionApplicationContext.java:251)
	at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.startRefresh(AbstractDelegatedExecutionApplicationContext.java:217)
	at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.stageOne(DependencyWaiterApplicationContextExecutor.java:224)
	at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor.refresh(DependencyWaiterApplicationContextExecutor.java:177)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:154)
	at org.eclipse.gemini.blueprint.extender.internal.activator.LifecycleManager$1.run(LifecycleManager.java:212)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.ExceptionInInitializerError
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:534)
	at java.base/java.lang.Class.forName(Class.java:513)
	at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:581)
	at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:375)
	at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:575)
	at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.lambda$new$1(AbstractClassGenerator.java:107)
	at org.springframework.cglib.core.internal.LoadingCache.lambda$createEntry$1(LoadingCache.java:52)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:57)
	... 22 more
Caused by: java.lang.ClassNotFoundException: org.springframework.beans.factory.BeanFactoryAware not found by foo.bar.app-confluence-common [286]
	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591)
	at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:421)
	at java.base/java.lang.Class.forName(Class.java:412)
	at foo.bar.app.confluence.common.config.SpringBeansConfig$$SpringCGLIB$$0.CGLIB$STATICHOOK361(<generated>)
	at foo.bar.app.confluence.common.config.SpringBeansConfig$$SpringCGLIB$$0.<clinit>(<generated>)
	... 32 more

I do not use the org.springframework.beans.factory.BeanFactoryAware anywhere in my code. Do I need to add some compile scope dependency?

My JavaConfig looks like so (shortened)

package foo.bar.app.confluence.common.config;

import com.atlassian.confluence.api.service.backuprestore.BackupRestoreService;
import com.atlassian.confluence.content.service.SpaceService;
import com.atlassian.confluence.core.ContentPermissionManager;
import com.atlassian.confluence.pages.PageManager;
import com.atlassian.confluence.search.IndexManager;
import com.atlassian.confluence.security.PermissionManager;
import com.atlassian.confluence.security.SpacePermissionManager;
import com.atlassian.confluence.setup.settings.GlobalSettingsManager;
import com.atlassian.confluence.user.ConfluenceUserResolver;
import com.atlassian.confluence.user.UserPreferencesAccessor;
import com.atlassian.confluence.xhtml.api.XhtmlContent;
import com.atlassian.plugins.whitelist.WhitelistService;
import com.atlassian.sal.api.ApplicationProperties;
import com.atlassian.sal.api.license.LicenseHandler;
import com.atlassian.sal.api.message.I18nResolver;
import com.atlassian.user.GroupManager;
import com.atlassian.user.UserManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import static com.atlassian.plugins.osgi.javaconfig.OsgiServices.importOsgiService;

@Configuration
public class SpringBeansConfig {

    @Bean
    public ApplicationProperties importApplicationProperties() {
        return importOsgiService(ApplicationProperties.class);
    }

thanks

Hello,
I also agree that earlier EAP versions worked fine.
But running 10.0.0-beta2 we get the following exception related to the Atlassian Spring Scanner:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.atlassian.com/schema/atlassian-scanner/2]

@PumpeCedric could you double check your spring context XML file (should be in src/main/resources/META-INF/spring)?

Mine looks like this and the plugin deploys fine on beta2:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:atlassian-scanner="http://www.atlassian.com/schema/atlassian-scanner/2"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.atlassian.com/schema/atlassian-scanner/2 http://www.atlassian.com/schema/atlassian-scanner/2/atlassian-scanner.xsd">

    <atlassian-scanner:scan-indexes/>

</beans>

Hi Jens,

thanks for your quick reply!
Mine looks identical :thinking:

I’m not aware of any new changes in either of these areas. If you are certain that your plugin worked with the latest EAP but not the Beta, if you could please provide sample plugin source for reproduction and I will look into this.

1 Like

@Kusal ok thanks for checking. Some how it now works, I had to add an !javax.annotation to the OSGI Imports and update to latest platform version. Now the app enables fine.

1 Like

Thanks for the clarification @Kusal.
For some reason building the plugin locally and installing it worked fine, but the JAR generated by our build pipeline did not.
Comparing the two JARs it became apparent that the JAR not working included spring-tx and spring-beans. I added spring-tx in earlier milestone versions to make the plugin compile.
Long story short, removing the spring-tx dependency resolved the issue :slight_smile:

/deleted Sorry, this was about a macro not working, just realized it’s not from Atlassian itself but a marketplace app, none of your problems :wink:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.