无法使用 mongodb 插件版本 3.0.3 运行 Grails 应用程序

Posted

技术标签:

【中文标题】无法使用 mongodb 插件版本 3.0.3 运行 Grails 应用程序【英文标题】:Can't run Grails app with mongodb plugin version 3.0.3 【发布时间】:2015-05-30 11:59:40 【问题描述】:

我正在尝试将我的 mongodb 插件从 2.0.1 升级到 3.0.3。但是我不断收到以下错误:

java.lang.NoClassDefFoundError: com/mongodb/AggregationOptions
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
    at java.lang.Class.getDeclaredMethods(Class.java:1855)
    at org.codehaus.groovy.reflection.CachedClass$3$1.run(CachedClass.java:84)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:81)
    at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:79)
    at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
    at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
    at org.codehaus.groovy.reflection.CachedClass.getMethods(CachedClass.java:250)
    at groovy.lang.MetaClassImpl.populateMethods(MetaClassImpl.java:343)
    at groovy.lang.MetaClassImpl.fillMethodIndex(MetaClassImpl.java:293)
    at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:3048)
    at groovy.lang.ExpandoMetaClass.initialize(ExpandoMetaClass.java:483)
    at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(Cl
    ...

我已尝试将插件的版本更改为 3.0.2,但错误仍然存​​在。

更新:

我正在使用 Grails 2.3.11

我已经尝试包含不指定依赖项的插件,并从我过去的配置中复制粘贴依赖项:

 dependencies 

        runtime "org.mongodb:mongo-java-driver:2.11.4"
        compile "org.mongodb:mongo-java-driver:2.11.4"
        runtime "com.gmongo:gmongo:1.2"

    

 plugins 

        ...

        compile(':mongodb:2.0.1') 
            excludes 'mongo-java-driver', 'gmongo'
        

【问题讨论】:

你能告诉我你的 BuildConfig.groovy 的依赖吗?还有您使用的是哪个版本的 grails? @ShashankAgrawal 问题已更新! 【参考方案1】:

稍微更新一下你的 BuildConfig:

compile ":mongodb:3.0.2"

不要指定任何其他与 mongo 相关的依赖项,也不要排除 mongo-java-drivergmongo。此外,如果您使用的是 mongeez 插件,则必须排除 java 驱动程序。

compile (":mongeez:0.2.3") 
    excludes("mongo-java-driver")

【讨论】:

3 个月后,这似乎是最好的解决方案!我以为它第一次不起作用,但现在它起作用了!【参考方案2】:

将依赖项更改为:

runtime "org.mongodb:mongo-java-driver:2.12.3"

compile "org.mongodb:mongo-java-driver:2.12.3"

有效

【讨论】:

谢谢! 2.12.3 中添加了哪些 2.11.4 中没有的内容?

以上是关于无法使用 mongodb 插件版本 3.0.3 运行 Grails 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何配置mongodb 3.0.3

mongodb 3.0.3 export json - 围绕数字创建 Number() 包装器

Windows环境下MongoDB的搭建

jmeter-MongoDB 数据库增删改查操作

如何在 grails 2.4.4 中使用 mongodb?

在windows7上安装mongodb选择哪个版本号