【问题标题】:Clojure Lein Classpath WoesClojure Lein 类路径问题
【发布时间】:2012-04-14 01:17:41
【问题描述】:

我有一个 Leiningen project.clj 文件如下:

(defproject insane-noises "1.0.0-SNAPSHOT"                                      
  :description "FIXME: write description"                                       
  :dependencies [[org.clojure/clojure "1.3.0"]                                  
                 [overtone "0.6.0"]]                                            
  :source-paths ["/Volumes/ramdisk"]                                            
  :java-source-paths ["/Volumes/ramdisk"]                                       
  :native-path "/Volumes/ramdisk")

现在,当我跑步时

$ lein repl
user=> (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader)))

路径 /Volumes/ramdisk 不会出现在我的路径中的任何位置。怎么回事?

为 Leiningen 设置类路径的正确方法是什么? (它似乎也忽略了在我的环境中定义的 CLASSPATH 变量。)

编辑:回复评论

user=> (seq (.. Thread currentThread getContextClassLoader getURLs))
nil

编辑:问题已解决。我正在使用

$ lein version
Leiningen 1.7.1 on Java 1.6.0_29 Java HotSpot(TM) 64-Bit Server VM

但是,我显然使用的是 Lein 2.0 的符号

【问题讨论】:

  • 查看Thread.currentThread().getContextClassloader()结果是否一样?
  • @hgrey:不,我得到了 nil。
  • 一个非常有用的调试类路径问题的工具是lein classpath 命令。例如,当您运行 lein repl 时,它会向您展示 Leiningen 将在类路径中添加的内容。

标签: java clojure classpath leiningen


【解决方案1】:

您使用的是哪个版本的 Leiningen?新的 2 版本有一些重大变化,其中之一是 :source-path "src/" 变成了 :source-paths ["src/"]。一个可能的解释是您正在尝试将此 lein2 project.clj 文件与 lein1 一起使用。

由于我们目前处于过渡期,因此您必须特别注意您自己使用的 lein 版本,以及如果遵循教程,该教程采用的是哪个版本。

您可以在此处阅读有关版本之间差异的更多信息:https://github.com/technomancy/leiningen/blob/master/NEWS.md

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多