Я могу использовать плагин mongdb и gmongo вместе в проекте grails?

Недавно я работаю над проектом Grails и собираюсь использовать mongodb в качестве нашей базы данных nosql, помимо mysql.

Я добавил плагин mongodb, проведу тестирование с доменом, и он хорошо работает (показать / отредактировать / сохранить...):

compile ':mongodb:3.0.1'

и попробуйте другой метод с помощью плагина gmongo, который полезен в случае, если я хочу использовать mongodb API низкого уровня (или, например, с помощью mapReduce)

runtime "org.mongodb:mongo-java-driver:2.11.3"
compile "org.mongodb:mongo-java-driver:2.11.3"
runtime "com.gmongo:gmongo:1.3"

попробуйте протестировать с помощью простого запроса find(), он тоже работает хорошо

Теперь я хочу объединить 2 метода и здесь ошибка:

| Error 2014-05-13 17:52:07,197 [localhost-startStop-1] ERROR plugins.DefaultGrailsPluginManager  - Error configuring dynamic methods for plugin [mongodb:3.0.1]: com/mongodb/AggregationOptions
Message: com/mongodb/AggregationOptions
    Line | Method
->> 2531 | privateGetDeclaredMethods in java.lang.Class
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|   1855 | getDeclaredMethods        in     ''
|     46 | getLocked . . . . . . . . in org.codehaus.groovy.util.LazyReference
|     33 | get                       in     ''
|     98 | createGormStaticApi . . . in org.grails.datastore.gorm.mongo.plugin.support.MongoMethodsConfigurer
|     65 | configure                 in org.grails.datastore.gorm.plugin.support.DynamicMethodsConfigurer
|     49 | configure . . . . . . . . in org.grails.datastore.gorm.mongo.plugin.support.MongoMethodsConfigurer
|     76 | doCall                    in MongodbGrailsPlugin$_closure2
|    262 | run . . . . . . . . . . . in java.util.concurrent.FutureTask
|   1145 | runWorker                 in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run                       in java.lang.Thread
Caused by ClassNotFoundException: com.mongodb.AggregationOptions
->>  366 | run                       in java.net.URLClassLoader$1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    355 | run                       in     ''
|    354 | findClass . . . . . . . . in java.net.URLClassLoader
|    425 | loadClass                 in java.lang.ClassLoader
|   2531 | privateGetDeclaredMethods in java.lang.Class
|   1855 | getDeclaredMethods        in     ''
|     46 | getLocked . . . . . . . . in org.codehaus.groovy.util.LazyReference
|     33 | get                       in     ''
|     98 | createGormStaticApi . . . in org.grails.datastore.gorm.mongo.plugin.support.MongoMethodsConfigurer
|     65 | configure                 in org.grails.datastore.gorm.plugin.support.DynamicMethodsConfigurer
|     49 | configure . . . . . . . . in org.grails.datastore.gorm.mongo.plugin.support.MongoMethodsConfigurer
|     76 | doCall                    in MongodbGrailsPlugin$_closure2
|    262 | run . . . . . . . . . . . in java.util.concurrent.FutureTask
|   1145 | runWorker                 in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run                       in java.lang.Thread

Я не знаю, как это исправить на самом деле!

1 ответ

Решение

Mongodb Plugin - это обертка над GMongo с мощными возможностями GORM. Вы можете определенно использовать GMongo или API более низкого уровня непосредственно из плагина вместо явного добавления этих зависимостей.

Посмотрите на build.gradle, где они включены. Скорее всего, ошибка связана с конфликтующими зависимостями, когда они используются одновременно.

Другие вопросы по тегам