Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-5749

java.lang.ClassNotFoundException: com.mongodb.internal.crypt.capi.MongoCryptOptions Exception

    • Type: Icon: Question Question
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Client Side Encryption
    • None
    • None
    • Java Drivers
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • None
    • None
    • None
    • None
    • None
    • None

      Summary

      Currently my project is setup to use spring-boot 3.3 and has a maven dependency for mongoCrypt v1.8.0

      When i attempt to upgrade mongoCrypt to 5.2.0 with spring-boot 3.3, or i upgrade to spring-boot 3.4 i see the follow exception thrown when trying to create a ClientEncryption bean.

      Please provide the version of the driver. If applicable, please provide the MongoDB server version and topology (standalone, replica set, or sharded cluster).

      How to Reproduce

      Spring boot v3.4 project with `spring-boot-starter-data-mongodb` dependency added and mongoCrypt 5.2.0
      [INFO] +- org.springframework.boot:spring-boot-starter-data-mongodb:jar:3.4.0:compile
      [INFO] | +- org.mongodb:mongodb-driver-sync:jar:5.2.1:compile
      [INFO] | | - org.mongodb:mongodb-driver-core:jar:5.2.1:compile
      [INFO] | | - org.mongodb:bson-record-codec:jar:5.2.1:runtime
      [INFO] | - org.springframework.data:spring-data-mongodb:jar:4.4.0:compile
      [INFO] +- org.mongodb:mongodb-crypt:jar:5.2.0:compile
      [INFO] | +- org.mongodb:bson:jar:5.2.1:compile
      Heres my code using explicit encryption - working in production
      @Beanpublic ClientEncryption mongoClientEncryption(final AwsCredentialsProvider environmentVariableCredentialProvider)

      { final MongoClientSettings kvmcs = MongoClientSettings.builder() .applyConnectionString(new ConnectionString(connectionString)) .build(); final ClientEncryptionSettings ces = ClientEncryptionSettings.builder() .keyVaultMongoClientSettings(kvmcs) .keyVaultNamespace(keyVaultNamespace) .kmsProviders( mongoConfigurationHelper.getKmsProvider(kmsProvider)) .kmsProviderPropertySuppliers( mongoConfigurationHelper.getKmsProviderSuppliers(environmentVariableCredentialProvider)) .build(); return ClientEncryptions.create(ces); }

      When running this code a failure occurs calling `ClientEncryptions.create(ces)`

      The root exception seems to be:

      Caused by: java.lang.ClassNotFoundException: com.mongodb.internal.crypt.capi.MongoCryptOptions 

      Here is the full stack trace:

      java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@34e68840 testClass = REDACTED.subscription.service.ApplicationTests, locations = [], classes = [REDACTED.subscription.service.Application], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.test.context.support.DynamicPropertiesContextCustomizer@0, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@30af5b6b, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@42039326, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4ce1d6d0, org.springframework.boot.test.web.reactor.netty.DisableReactorResourceFactoryGlobalResourcesContextCustomizerFactory$DisableReactorResourceFactoryGlobalResourcesContextCustomizerCustomizer@531f4093, org.springframework.boot.test.autoconfigure.OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer@460ebd80, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@db57326, org.springframework.boot.test.context.SpringBootTestAnnotation@32c837d], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
      	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180)	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)	at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191)	at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130)	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)	at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:160)	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$11(ClassBasedTestDescriptor.java:378)	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:383)	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$12(ClassBasedTestDescriptor.java:378)	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:377)	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$7(ClassBasedTestDescriptor.java:290)	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:289)	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$5(ClassBasedTestDescriptor.java:279)	at java.base/java.util.Optional.orElseGet(Optional.java:364)	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$6(ClassBasedTestDescriptor.java:278)	at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31)	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$1(TestMethodTestDescriptor.java:105)	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:104)	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:68)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$2(NodeTestTask.java:128)	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:128)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160)	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160)	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)	at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53)	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'consumerSubscriptionController' defined in file [/Users/calum.mcveigh/gitlab/ecns/subscription-service/target/classes/REDACTED/subscription/service/controller/ConsumerSubscriptionController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'subscriptionService' defined in file [/Users/calum.mcveigh/gitlab/ecns/subscription-service/target/classes/REDACTED/subscription/service/service/SubscriptionServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 4: Error creating bean with name 'encryptionService' defined in file [/Users/calum.mcveigh/gitlab/ecns/subscription-service/target/classes/REDACTED/subscription/service/service/EncryptionService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mongoClientEncryption' defined in class path resource [REDACTED/subscription/service/configuration/MongoConfiguration.class]: Failed to instantiate [com.mongodb.client.vault.ClientEncryption]: Factory method 'mongoClientEncryption' threw exception with message: com/mongodb/internal/crypt/capi/MongoCryptOptions	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1371)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1208)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:288)	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1122)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1093)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1030)	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987)	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)	at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)	at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137)	at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)	at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)	at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1461)	at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553)	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137)	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108)	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225)	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152)	... 74 moreCaused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'subscriptionService' defined in file [/Users/calum.mcveigh/gitlab/ecns/subscription-service/target/classes/REDACTED/subscription/service/service/SubscriptionServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 4: Error creating bean with name 'encryptionService' defined in file [/Users/calum.mcveigh/gitlab/ecns/subscription-service/target/classes/REDACTED/subscription/service/service/EncryptionService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mongoClientEncryption' defined in class path resource [REDACTED/subscription/service/configuration/MongoConfiguration.class]: Failed to instantiate [com.mongodb.client.vault.ClientEncryption]: Factory method 'mongoClientEncryption' threw exception with message: com/mongodb/internal/crypt/capi/MongoCryptOptions	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1371)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1208)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:288)	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1568)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1514)	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)	... 100 moreCaused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'encryptionService' defined in file [/Users/calum.mcveigh/gitlab/ecns/subscription-service/target/classes/REDACTED/subscription/service/service/EncryptionService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'mongoClientEncryption' defined in class path resource [REDACTED/subscription/service/configuration/MongoConfiguration.class]: Failed to instantiate [com.mongodb.client.vault.ClientEncryption]: Factory method 'mongoClientEncryption' threw exception with message: com/mongodb/internal/crypt/capi/MongoCryptOptions	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804)	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1371)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1208)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:288)	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1568)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1514)	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)	... 113 moreCaused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoClientEncryption' defined in class path resource [REDACTED/subscription/service/configuration/MongoConfiguration.class]: Failed to instantiate [com.mongodb.client.vault.ClientEncryption]: Factory method 'mongoClientEncryption' threw exception with message: com/mongodb/internal/crypt/capi/MongoCryptOptions	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657)	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:645)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1351)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1181)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:288)	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1626)	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1514)	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)	... 126 moreCaused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mongodb.client.vault.ClientEncryption]: Factory method 'mongoClientEncryption' threw exception with message: com/mongodb/internal/crypt/capi/MongoCryptOptions	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:199)	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:88)	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:168)	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)	... 140 moreCaused by: java.lang.NoClassDefFoundError: com/mongodb/internal/crypt/capi/MongoCryptOptions	at com.mongodb.internal.capi.MongoCryptHelper.createMongoCryptOptions(MongoCryptHelper.java:82)	at com.mongodb.internal.capi.MongoCryptHelper.createMongoCryptOptions(MongoCryptHelper.java:56)	at com.mongodb.client.internal.Crypts.create(Crypts.java:64)	at com.mongodb.client.internal.ClientEncryptionImpl.<init>(ClientEncryptionImpl.java:87)	at com.mongodb.client.internal.ClientEncryptionImpl.<init>(ClientEncryptionImpl.java:81)	at com.mongodb.client.vault.ClientEncryptions.create(ClientEncryptions.java:36)	at REDACTED.subscription.service.configuration.MongoConfiguration.mongoClientEncryption(MongoConfiguration.java:143)	at REDACTED.subscription.service.configuration.MongoConfiguration$$SpringCGLIB$$0.CGLIB$mongoClientEncryption$3(<generated>)	at REDACTED.subscription.service.configuration.MongoConfiguration$$SpringCGLIB$$FastClass$$1.invoke(<generated>)	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258)	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:348)	at REDACTED.subscription.service.configuration.MongoConfiguration$$SpringCGLIB$$0.mongoClientEncryption(<generated>)	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at java.base/java.lang.reflect.Method.invoke(Method.java:568)	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:171)	... 143 moreCaused by: java.lang.ClassNotFoundException: com.mongodb.internal.crypt.capi.MongoCryptOptions	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)	... 160 more 

      Additional Background

      Please provide any additional background information that may be helpful in diagnosing the bug.

            Assignee:
            nabil.hachicha@mongodb.com Nabil Hachicha
            Reporter:
            calum.mcveigh@engineering.digital.dwp.gov.uk Calum McVeigh
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved:
              None
              None
              None
              None