代码之家  ›  专栏  ›  技术社区  ›  prosseek

如何使用emacs slime/conjure添加类路径?

  •  2
  • prosseek  · 技术社区  · 14 年前

    here

    当我运行(doseq[p(.geturl(java.lang.ClassLoader/getSystemClassLoader))](println(.getPath p)))来获取类路径时,我得到了以下结果。

    /Users/smcho/.swank-clojure/clojure-1.1.0-master-20091202.150145-1.jar
    /Users/smcho/.swank-clojure/clojure-contrib-1.1.0-master-20091212.205045-1.jar
    /Users/smcho/.swank-clojure/swank-clojure-1.1.0.jar
    

    如何为clojure添加emacs/slime类路径?

    3 回复  |  直到 7 年前
        1
  •  3
  •   Siddhartha Reddy    14 年前

    根据您是否使用 slime-connect 启动slime(通过连接到远程swank服务器,使用 lein swank ,例如)或您开始使用粘液 M-X slime .

    如果你用的是 粘液连接 莱因·斯旺克 ,只需将希望成为类路径一部分的jar添加到项目的 lib 目录。

    M-X粘液 ,下面的elisp代码将为您发挥神奇的作用(只需将它放在~/.emacs文件中)。

    (eval-after-load "swank-clojure"
      '(progn
         (add-to-list 'swank-clojure-classpath
              "/Users/smcho/.clojure/")
         (add-to-list 'swank-clojure-classpath
              "/Users/smcho/.clojure/blah.jar")))
    

    /Users/smcho/.clojure/ /Users/smcho/.clojure/blah.jar 到类路径(请注意,您需要重新启动emacs或重新加载.emacs文件:type M-X load-library 然后键入 .emacs

        2
  •  2
  •   Edgar Gonçalves    14 年前

    我相信现在启动clojure reple的建议方法是 lein swank ,并使用 \M-x slime-connect . 看到了吗 http://github.com/technomancy/leiningen/ 有关此工具的详细说明。

    lein deps 您将得到一个包含所有jar的“lib”目录。自从 莱因·斯旺克 命令将该目录用作类路径,您所要做的就是将jar添加到该目录中。

    也就是说,如果你还在使用 \M-x swank-clojure-project

    但是,如果你只是用一个普通的 \M-x slime 要启动clojure repl,那么我认为没有“干净”的解决方案(除了将路径添加到全局环境的$CLASSPATH或使用一些elisp voodoo(就像seh的答案中的那样)来更改java vm命令参数之外)。但我相信这只是为了做一些非常基础的实验,不应该用于任何基于项目的工作(正是出于这个原因!)

        3
  •  1
  •   seh Alexei    14 年前

    (let ((base-path "/Users/smcho/.swank-clojure"))
      (setq swank-clojure-classpath
            (append
             swank-clojure-classpath
             (mapcar (lambda (d)
                       (expand-file-name d base-path))
                     '("clojure-1.1.0-master-20091202.150145-1.jar"
                       "clojure-contrib-1.1.0-master-20091212.205045-1.jar"
                       "swank-clojure/swank-clojure-1.1.0.jar")))))
    

    它获取Jar文件列表并将它们添加到变量中 swank-clojure-classpath . 请注意,此表单必须由 Emacs公司

    有更详细的方法来设置项目的类路径,例如在指定的项目根目录下包含Maven样式的路径。