【问题标题】:Mongo NoSuchMethodError insertOne when deployed to AWS with SpringBoot使用 SpringBoot 部署到 AWS 时出现 Mongo NoSuchMethodError insertOne
【发布时间】:2021-04-18 00:58:15
【问题描述】:

我的 DAO 在本地运行时工作正常,允许插入数据库,但是当部署到 Beanstalk 时,会发生以下异常。

我无法在本地重现此内容,即使删除 m2 存储库中的所有 Mongo 依赖项也是如此。我尝试了不同的 Mongo 版本,并允许 Spring 管理 Mongo 部门。

模块 POM

    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.0</version>
    </dependency>

</dependencies>

父 POM

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.7.RELEASE</version>
    <relativePath />
</parent>

堆栈跟踪

java.lang.NoSuchMethodError: com.mongodb.client.MongoCollection.insertOne(Ljava/lang/Object;)Lcom/mongodb/client/result/InsertOneResult;
at com.project.data.nosql.dao.SearchRecordMongoDao.insert(SearchRecordMongoDao.java:53) ~[data-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT]
at com.project.data.nosql.dao.SearchRecordMongoDao$$FastClassBySpringCGLIB$$75e83eda.invoke(<generated>) ~[data-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at com.project.data.nosql.dao.SearchRecordMongoDao$$EnhancerBySpringCGLIB$$c4dd29e8.insert(<generated>) ~[data-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT]
at com.project.async.AsyncSaveSearch.saveReports(AsyncSaveSearch.java:26) ~[classes!/:0.0.1-SNAPSHOT]
at com.project.async.AsyncSaveSearch$$FastClassBySpringCGLIB$$a06fec91.invoke(<generated>) ~[classes!/:0.0.1-SNAPSHOT]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115) ~[spring-aop-5.2.12.RELEASE.jar!/:5.2.12.RELEASE]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_265]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_265]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_265]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_265]

【问题讨论】:

    标签: mongodb amazon-web-services spring-boot maven


    【解决方案1】:

    spring-boot-start-parent 升级到 v2.4.0 更正了该问题。这会产生 mongo 驱动程序 4.1.1 托管版本。

    奇怪的是,我不得不将这个工件两次上传到 Beanstalk。由于类路径问题,第一次尝试导致 SpringBoot 无法启动。它会在本地启动,所以我再次尝试,现在一切正常。

    【讨论】:

      猜你喜欢
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2012-11-10
      • 2012-04-23
      • 2017-05-18
      相关资源
      最近更新 更多