我在开始使用casabah集成scala和mongoDb时遇到了问题。我正在使用Spring Tool Suite(STS)并导入以下jar文件:
弹簧数据的mongodb-1.6.0.RELEASE.jar
com.mongodb.jar
卡斯巴-commons_2.10-2.7.2.jar
卡斯巴-query_2.10-2.7.2.jar
约达时间-2.1.jar
SLF4J-API-1.7.7.jar
卡斯巴-gridfs_2.10-2.5.0.jar
scalaj-collection_2.10-1.4.jar
SLF4J-简单1.7.7.jar
卡斯巴-core_2.10-2.7.2.jar
蒙戈-2.10.0.jar
蒙戈-java的驾驶员2.10.0.jar
但是,我收到了一个错误。
错误:说明资源路径位置键入错误的符号引用。 Implicits.class中的签名是指com.mongodb包中的Cursor类型,它不可用。它可能在当前类路径中完全丢失,或者类路径上的版本可能与编译Implicits.class时使用的版本不兼容。
我读了几篇帖子说明问题出在mongo-java-driver中的版本,所以我也尝试使用mongo-java-driver-2.10.1.jar,但它仍然给我一个错误。
有人可以帮我解决这个错误吗?
提前多多感谢!!!
答案 0 :(得分:1)
它看起来像是一个依赖问题。 Casbah基于Mongo Java驱动程序的固定版本构建,因此依赖于特定的二进制兼容版本。
Casbah版本号应该都是相同的 - 上面你主要有Casbah 2.7.2但gridfs版本错误:casbah-gridfs_2.10-2.5.0.jar
。
此外,Casbah 2.7.2依赖于Mongo Java Driver的2.12.2版本,但最新版本的Casbah是2.7.3,它依赖于Mongo Java Driver的2.12.3版本。
为了使这更简单,Casbah有一个all dependencies jar,其中包括最新版本的java驱动程序和所有其他相关的依赖项。或者,pom file应指向声明其依赖项的所有依赖包。 (由于Casbah被拆分为子包,casbah-commons pom列出了所有外部依赖项。)