我尝试在我的clojure项目中使用apachestorm和redis。我的 project.clj
看起来像这样:
(defproject storm "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.7.0"]
[org.apache.storm/storm-core "0.9.5"]
[com.taoensso/carmine "2.11.1"] ])
redis connector模块中的命名空间声明为:
(ns storm.redis
(:require [taoensso.carmine :as car]))
现在,出于某种原因,如果我尝试计算上述命名空间声明,会得到一个奇怪的错误:
CompilerException java.lang.Exception: namespace 'taoensso.carmine' not found, compiling:(storm/redis.clj:1:22)
如果我在 project.clj
到
[storm "0.9.0.1"] ; Last available version on Clojars
然后一切正常。我做错什么了?
1条答案
按热度按时间jw5wzhpr1#
我想我找到了解决办法。跑步
lein deps :tree
给我这个:排除
commons-codec
从carmine
仍然会产生相同的错误,但反之亦然,并从storm
工作:所以这意味着两个库都将使用
commons-codec
.似乎
carmine
由于依赖项的版本较低,无法初始化自身(?)。这只是猜测,因为我不知道如何调试那些库初始化例程。更新:carmine library的作者petertaoussanis在回答github的问题时确认了这是一个依赖性问题,并提出了一些解决类似问题的其他方法。谢谢彼得!