Я могу использовать плагин 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, где они включены. Скорее всего, ошибка связана с конфликтующими зависимостями, когда они используются одновременно.