2014-10-12 128 views
1

我在开始使用casabah来整合scala和mongoDb时遇到问题。我使用Spring工具套件(STS)和进口下列jar文件:包含casbah依赖关系时出错

弹簧数据的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,但它仍然给我一个错误。

有人能帮我解决这个错误吗?

非常感谢!

回答

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列出了所有外部依赖项)。