【问题标题】:How to change Leiningen dependency tree如何更改 Leiningen 依赖树
【发布时间】:2016-07-21 11:30:18
【问题描述】:

我在我的项目中使用 [korma "0.4.0"]。

而且这个版本的 Korma 默认使用 c3p0-​0.9.1.2

根据this SO 帖子,我需要 c3p0-​0.9.5.1​ 才能在 NewProxyConnection 上使用 createArrayOf。我这样做是因为我需要能够插入 PostGre SQL 数组。

为了完整起见,我用于将 Clojure 向量转换为 Java 中的 SQL Array 对象的代码如下:

(.createArrayOf
  (-> db get-connection :datasource .getConnection)
  "varchar"
  (into-array String someVector)
)

另外,我得到的错误是:

线程“主”java.lang.AbstractMethodError 中的异常: com.mchange.v2.c3p0.impl.NewProxyConnection.createArrayOf

这与我上面提到的同一篇 SO 帖子中提到的错误相同。

如何更改依赖关系树,以使 Korma 强制使用 c3p0-​0.9.5.1 而不是 c3p0-​0.9.1.2 em>​?

【问题讨论】:

    标签: java postgresql clojure


    【解决方案1】:

    在您的project.clj 中,询问您需要的版本,并且为了更好地衡量,从要求错误版本的项目中排除依赖项通常会有所帮助。

    :dependencies [[com.mchange/c3p0 "0.9.5.1"]
                   [korma "0.4.2"
                    :exclusions [c3p0]]]
    

    依赖解析器将尊重嵌套依赖的顶级依赖,:exclusions 将阻止使用特定 dep 请求的版本。

    【讨论】:

    • 我试过了,但 Korma 仍然使用相同的版本。初始化 c3p0-0.9.1.2
    • 这是我的依赖项——有什么问题吗? :dependencies [ [org.clojure/clojure "1.8.0"] [enlive "1.1.5"] [org.clojure/data.json "0.2.6"] [org.postgresql/postgresql "9.3-1104-jdbc4"] [com.mchange/c3p0 "0.9.5.1"] [korma "0.4.0" :exclusions [com.mchange/c3p0] ] [raven-clj "1.4.1"] ]
    • 您可能会发现查看lein deps :tree 的输出以了解引入版本冲突的位置很有用
    • 谢谢。 Korma 需要 c3p0 而不是带有命名空间的那个。奇怪的。你怎么看? [com.mchange/c3p0“0.9.5.1”][com.mchange/mchange-commons-java“0.2.10”][korma“0.4.2”:排除[[com.mchange/c3p0]]][c3p0” 0.9.1.2"] [org.clojure/java.jdbc "0.3.7"]
    • 正确的做法是:exclusions [c3p0]请更改您的答案,我会接受。
    猜你喜欢
    • 2016-01-10
    • 2012-07-07
    • 1970-01-01
    • 2015-01-29
    • 2021-02-20
    • 2013-01-23
    • 2011-01-25
    • 2021-01-01
    • 2013-08-21
    相关资源
    最近更新 更多