【问题标题】:Trouble converting from Clojure application to latest Clojure从 Clojure 应用程序转换到最新的 Clojure 时遇到问题
【发布时间】:2014-04-23 19:34:16
【问题描述】:

我不知道升级后为什么会出现以下编译错误:

Compiling addr-verify.core
Exception in thread "main" java.lang.NoClassDefFoundError: 
clojure/lang/ILookupHost, compiling:(core.clj:39:1)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3463)

我正在使用 leiningen 2.3.4,并且正在尝试升级应用程序以使用 Clojure 1.5.1 和一些依赖项。这与旧的 project.clj 编译得很好。但我想使用 Clojure 1.5.1。我只是对造成这种情况的原因感到困惑。

这些是两个 project.clj 版本之间的差异。

< (defproject addr-verify "1.0.0-SNAPSHOT"

> (defproject addr-verify "1.0.1-SNAPSHOT"

<   :dependencies [[org.clojure/clojure "1.2.1"]
<                  [org.clojure/clojure-contrib "1.2.0"]
<                  [clojure-csv/clojure-csv "1.2.4"]
<                  [org.clojure/tools.cli "0.1.0"]
<                  [clj-http "0.1.3"]]
<    :main addr-verify.core)

>   :dependencies [[org.clojure/clojure "1.5.1"]
>                  [clojure-csv/clojure-csv "2.0.1"]
>                  [org.clojure/tools.cli "0.3.1"]
>                  [clj-http "0.9.1"]]
>    :omit-source true
>    :main addr-verify.core
>    :aot  [addr-verify.core])

【问题讨论】:

  • 您在更改版本后是否运行过lein clean?有时会创建和重用已编译的工件,这可能会在您进行版本更改时导致问题。
  • 请将此评论答案作为真实答案。我现在有一个新的编译问题,这是一个好兆头。

标签: clojure leiningen


【解决方案1】:

运行lein clean,如果你还没有。

有时会创建并重用已编译的工件,当您更改库版本时,这可能会导致问题。 lein clean 清除这些工件。

【讨论】:

  • 谢谢。这就是使 stackoverflow 成为宝贵资源的原因。只要有人不举手并展示一些工作,人们就愿意提供帮助。
【解决方案2】:

ILookupHost 自 Clojure 1.3.0 起已被删除,因此您可能有旧的编译工件或已编译的依赖项。

Clojure 的最新版本是 1.6.0 - 为什么不升级到那里呢?

我不确定有什么区别,但我通常使用 org.clojure/data.csv 作为我的 CSV 库。可能值得研究。

如果您需要帮助查找旧的贡献者,请参阅:http://dev.clojure.org/display/community/Where+Did+Clojure.Contrib+Go

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    相关资源
    最近更新 更多