gpt4 book ai didi

clojure - 在 Clojure 中正确导入 Apache Storm 依赖项

转载 作者:可可西里 更新时间:2023-11-01 10:59:12 25 4
gpt4 key购买 nike

我尝试在我的 Clojure 项目中使用 Apache Storm 和 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 连接器模块中的命名空间声明是:

(ns storm.redis
(:require [taoensso.carmine :as car]))

现在,出于某种原因,如果我尝试计算上面的 namespace 声明,我会得到一个奇怪的错误:

CompilerException java.lang.Exception: namespace 'taoensso.carmine' not found, compiling:(storm/redis.clj:1:22)

如果我将project.clj中的Storm依赖修改为

[storm "0.9.0.1"] ; Last available version on Clojars

然后一切正常。我做错了什么?

最佳答案

我想我已经找到了解决方案。运行 lein deps :tree 给了我这个:

Possibly confusing dependencies found:
[org.apache.storm/storm-core "0.9.5"] -> [commons-codec "1.6"]
overrides
[com.taoensso/carmine "2.11.1"] -> [commons-codec "1.10"]

Consider using these exclusions:
[com.taoensso/carmine "2.11.1" :exclusions [commons-codec]]

carmine 中排除 commons-codec 仍然产生相同的错误,但反之亦然,并且从 storm 中排除有效:

[org.apache.storm/storm-core "0.9.5" :exclusions [commons-codec]]

所以这意味着两个库都将使用较新版本的 commons-codec

carmine 似乎由于依赖项的版本较低而未能自行初始化(?)。这只是一个猜想,因为我不知道如何调试那些库初始化例程。

更新:Carmine 库的作者 Peter Taoussanis 对此 GitHub issue 的回应确认这是一个依赖性问题,并提出了一些其他解决类似问题的方法。谢谢彼得!

关于clojure - 在 Clojure 中正确导入 Apache Storm 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32519992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com