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

时间:2015-03-26 12:54:53

标签: mongodb grails grails-plugin grails-2.3 mongo-java-driver

我试图将我的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'
        }

2 个答案:

答案 0 :(得分:2)

将依赖项更改为:

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

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

工作

答案 1 :(得分:2)

稍微更新您的BuildConfig:

compile ":mongodb:3.0.2"

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

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