Skip to main content
New Participant
May 9, 2019

Unable to initialize JCR_OAK resource resolver factory

  • May 9, 2019
  • 4 replies
  • 5759 views

Hi,

We have upgraded from AEM 6.4 to AEM 6.5.

After upgrade dependencies in our application the integration tests fail.

Unable to initialize JCR_OAK resource resolver factory: Unable to invoke method 'activate' for class org.apache.sling.testing.mock.sling.oak.OakMockSlingRepository

java.lang.RuntimeException: Unable to initialize JCR_OAK resource resolver factory: Unable to invoke method 'activate' for class org.apache.sling.testing.mock.sling.oak.OakMockSlingRepository

at io.wcm.testing.mock.aem.context.ContextResourceResolverFactory.get(ContextResourceResolverFactory.java:70)

at io.wcm.testing.mock.aem.context.AemContextImpl.newResourceResolverFactory(AemContextImpl.java:76)

at org.apache.sling.testing.mock.sling.context.SlingContextImpl.resourceResolverFactory(SlingContextImpl.java:142)

at org.apache.sling.testing.mock.sling.context.SlingContextImpl.setUp(SlingContextImpl.java:126)

at io.wcm.testing.mock.aem.context.AemContextImpl.setUp(AemContextImpl.java:81)

at io.wcm.testing.mock.aem.junit5.AemContext.setUpContext(AemContext.java:99)

at io.wcm.testing.mock.aem.junit5.AemContextExtension.postProcessTestInstance(AemContextExtension.java:55)

at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$invokeTestInstancePostProcessors$5(ClassTestDescriptor.java:349)

at org.junit.jupiter.engine.descriptor.JupiterTestDescriptor.executeAndMaskThrowable(JupiterTestDescriptor.java:215)

at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$invokeTestInstancePostProcessors$6(ClassTestDescriptor.java:349)

at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)

at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)

at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)

at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)

at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)

at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312)

at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:743)

at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742)

at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)

at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.invokeTestInstancePostProcessors(ClassTestDescriptor.java:348)

at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.instantiateAndPostProcessTestInstance(ClassTestDescriptor.java:270)

at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$2(ClassTestDescriptor.java:259)

at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$3(ClassTestDescriptor.java:263)

at java.util.Optional.orElseGet(Optional.java:267)

at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$4(ClassTestDescriptor.java:262)

at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:82)

at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:59)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$0(NodeTestTask.java:83)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:83)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:69)

at java.util.ArrayList.forEach(ArrayList.java:1257)

at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)

at java.util.ArrayList.forEach(ArrayList.java:1257)

at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)

at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)

at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)

at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)

at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)

at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)

at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)

at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)

at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)

at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)

at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)

at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:94)

at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$100(JUnitPlatformTestClassProcessor.java:79)

at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)

at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)

at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)

at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)

at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)

at com.sun.proxy.$Proxy2.stop(Unknown Source)

at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)

at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)

at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)

at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)

at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)

at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)

at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)

at java.lang.Thread.run(Thread.java:748)

Caused by: java.lang.RuntimeException: Unable to invoke method 'activate' for class org.apache.sling.testing.mock.sling.oak.OakMockSlingRepository

at org.apache.sling.testing.mock.osgi.OsgiServiceUtil.invokeMethod(OsgiServiceUtil.java:321)

at org.apache.sling.testing.mock.osgi.OsgiServiceUtil.invokeLifecycleMethod(OsgiServiceUtil.java:150)

at org.apache.sling.testing.mock.osgi.OsgiServiceUtil.activateDeactivate(OsgiServiceUtil.java:85)

at org.apache.sling.testing.mock.osgi.MockOsgi.activate(MockOsgi.java:186)

at org.apache.sling.testing.mock.sling.ResourceResolverFactoryInitializer.registerServiceIfNotPresent(ResourceResolverFactoryInitializer.java:167)

at org.apache.sling.testing.mock.sling.ResourceResolverFactoryInitializer.registerServiceIfNotPresent(ResourceResolverFactoryInitializer.java:152)

at org.apache.sling.testing.mock.sling.ResourceResolverFactoryInitializer.setUp(ResourceResolverFactoryInitializer.java:63)

at org.apache.sling.testing.mock.sling.MockSling.newResourceResolverFactory(MockSling.java:76)

at io.wcm.testing.mock.aem.context.ContextResourceResolverFactory.get(ContextResourceResolverFactory.java:48)

... 79 more

Caused by: java.lang.NoClassDefFoundError: org/apache/jackrabbit/oak/security/internal/SecurityProviderBuilder

at org.apache.jackrabbit.oak.Oak$OakDefaultComponents.<init>(Oak.java:976)

at org.apache.jackrabbit.oak.Oak$OakDefaultComponents.<clinit>(Oak.java:958)

at org.apache.jackrabbit.oak.jcr.Jcr.<init>(Jcr.java:101)

at org.apache.jackrabbit.oak.jcr.Jcr.<init>(Jcr.java:122)

at org.apache.sling.testing.mock.sling.oak.OakMockSlingRepository.activate(OakMockSlingRepository.java:73)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.sling.testing.mock.osgi.OsgiServiceUtil.invokeMethod(OsgiServiceUtil.java:312)

... 87 more

Caused by: java.lang.ClassNotFoundException: org.apache.jackrabbit.oak.security.internal.SecurityProviderBuilder

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 97 more

pl.gp3.TemplateTest > dumbTest() FAILED

    java.lang.RuntimeException

        Caused by: java.lang.RuntimeException

            Caused by: java.lang.NoClassDefFoundError

                Caused by: java.lang.ClassNotFoundException

1 test completed, 1 failed

> Task :test FAILED

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

4 replies

New Participant
June 4, 2022

Im working on archetypre AEM as a Cloud Service version 5.1.2, sdk.api

2022.4.7138.20220427T075748Z-220401

, and I was able to get my node property request working by switching to

ResourceResolverType.JCR_MOCK

. And following the dependecies in the main pom.xml of the example project: https://github.com/adobe/aem-guides-wknd

New Participant
September 16, 2019

In the dependencies, there seem to be some over-riding classes so the loading order matters. In the core sub-project, the POM file contains these two blocks:

```

    <!-- https://mvnrepository.com/artifact/org.apache.sling/org.apache.sling.testing.sling-mock-oak -->

    <dependency>

        <groupId>org.apache.sling</groupId>

        <artifactId>org.apache.sling.testing.sling-mock-oak</artifactId>

        <scope>test</scope>

    </dependency>

```

and...

```

    <dependency>

        <groupId>com.adobe.aem</groupId>

        <artifactId>uber-jar</artifactId>

        <classifier>apis</classifier>

    </dependency>

```

It matters whether the `sling-mock-oak` block is before or after the `uber-jar` (6.5.0) block.

If the `sling-mock-oak` block is after the `uber-jar` block, then the error occurs.
if the `sling-mock-oak` block is before the `uber-jar` block, then the error does not occur.

ALSO: If you're running tests in Eclipse:
You might still get the error even after placing `sling-mock-oak` before `uber-jar`.

If so, go into Eclipse -> Run -> Run Configurations... -> [choose JUnit run configuration you're using] -> ClassPath

Under "User Entries" you should see both ".core" and "Maven Dependencies". Use the "Up" button if necessary to ensure that "Maven Dependencies" is above ".core"

New Participant
May 9, 2019

plugins {

  id 'java'
}

group 'pl.gp3.aem.test'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {

  mavenCentral()

  maven { url = uri("https://repo.adobe.com/nexus/content/groups/public") }

}

configurations {

   testImplementation.extendsFrom compileOnly
}

dependencies {

   // AEM runtime dependencies
   compileOnly 'com.adobe.aem:uber-jar:6.5.0:apis'
  
   compileOnly 'org.osgi:osgi.cmpn:6.0.0'
   compileOnly 'org.osgi:org.osgi.core:6.0.0'
   compileOnly 'javax.servlet:servlet-api:2.5'
   compileOnly 'javax.jcr:jcr:2.0'
   compileOnly 'org.slf4j:slf4j-api:1.7.25'
   compileOnly 'org.apache.geronimo.specs:geronimo-atinject_1.0_spec:1.0'
   compileOnly 'org.apache.sling:org.apache.sling.api:2.18.4'
   compileOnly 'org.apache.sling:org.apache.sling.jcr.api:2.4.0'
   compileOnly 'org.apache.sling:org.apache.sling.models.api:1.3.8'
   compileOnly 'org.apache.sling:org.apache.sling.settings:1.3.10'
   compileOnly 'com.google.guava:guava:15.0'
   compileOnly 'com.google.code.gson:gson:2.8.5'
   compileOnly 'joda-time:joda-time:2.9.1'
   compileOnly 'org.jetbrains:annotations:13.0'
   compileOnly 'org.osgi:org.osgi.compendium:4.2.0'

   // Test dependencies
   testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.2'
   testImplementation 'org.junit.jupiter:junit-jupiter-params:5.3.2'
   testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.2'
   testImplementation 'org.mockito:mockito-core:2.23.4'
   testImplementation 'org.mockito:mockito-junit-jupiter:2.23.4'
   testImplementation 'org.hamcrest:hamcrest:2.1'
   testImplementation 'io.wcm:io.wcm.testing.aem-mock.junit5:2.4.6'
   testImplementation 'org.apache.sling:org.apache.sling.testing.sling-mock-oak:2.1.4'
}

test {

  useJUnitPlatform()

}

build.gradle file

New Participant
May 9, 2019

There is a simplified version of test (It fails on the setup phase)

GitHub - dkociniewski/aem-65-template-tests

The issue doesn't occur with uber-jar:6.4.0

There is a test class

package pl.gp3;

import io.wcm.testing.mock.aem.junit5.AemContext;
import io.wcm.testing.mock.aem.junit5.AemContextExtension;
import org.apache.sling.testing.mock.sling.ResourceResolverType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;


@ExtendWith(AemContextExtension.class)

@ExtendWith(MockitoExtension.class)

@MockitoSettings(strictness = Strictness.LENIENT)

class TemplateTest {

   private static final String EXISTING_SITE_PATH = "/content/site";

  private final AemContext context = new AemContext(ResourceResolverType.JCR_OAK);

   @BeforeEach
   void setUp() {

   context.load().json("/template-test/content.json", EXISTING_SITE_PATH);
   context.load().json("/template-test/templates.json", "/conf/site");
   }

   @Test
   void dumbTest() {

  Assertions.assertTrue(true);
   }

}

templates.json

{

  "jcr:primaryType": "sling:OrderedFolder",
  "jcr:title": "We.Retail",
  "cq:templateTypesOrigin": "local",
  "cq:templatesOrigin": "local",
  "settings": {

   "jcr:primaryType": "sling:Folder",
   "wcm": {

   "jcr:primaryType": "cq:Page",
   "templates": {

   "jcr:primaryType": "cq:Page",
   "hero-page": {

   "jcr:primaryType": "cq:Template",
   "thumbnail.png": {

   "jcr:primaryType": "nt:file",
   "jcr:content": {

   "jcr:primaryType": "nt:resource",
   "jcr:mimeType": "image/png",
   ":jcr:data": 59357,
   "jcr:uuid": "4da9a62e-5ad5-420b-9648-d90505e7b331"
   }

  },
   "initial": {

   "jcr:primaryType": "cq:Page",
   "jcr:content": {

   "cq:template": "/conf/we-retail/settings/wcm/templates/hero-page",
   "jcr:created": "Tue May 07 2019 12:48:45 GMT+0200",
   "sling:resourceType": "weretail/components/structure/page"
   }

  },
   "jcr:content": {

   "jcr:primaryType": "cq:PageContent",
   "jcr:title": "Hero Page",
   "status": "enabled",
   "cq:templateType": "/conf/we-retail/settings/wcm/template-types/empty-page"
   },
   "structure": {

   "jcr:primaryType": "cq:Page",
   "jcr:content": {

   "jcr:primaryType": "cq:PageContent",
   "cq:template": "/conf/we-retail/settings/wcm/templates/hero-page",
   "cq:deviceGroups": [

   "mobile/groups/responsive"
   ],
   "sling:resourceType": "weretail/components/structure/page"
   }

  }

  }

  }

  }

  }

}