【问题标题】:How do I set up the Clojure classpath in Emacs after installing with ELPA?使用 ELPA 安装后,如何在 Emacs 中设置 Clojure 类路径?
【发布时间】:2010-03-07 22:02:28
【问题描述】:

我正在尝试将路径添加到我使用 ELPA 在 Emacs 中设置的 Clojure REPL 中的类路径。显然,这不是 $CLASSPATH 环境变量,而是 Swank 设置的 swank-clojure-classpath 变量。因为我使用 ELPA 来安装 Swank、Clojure 等,所以有大量的 .el 文件而不是我的 .emacs 文件来处理所有事情。不幸的是,我现在不知道如何更改类路径。

我尝试在我的 .emacs 中的 ELPA 内容之前和之后使用 (setq 'swank-clojure-extra-classpaths (list ...)) ,并且我尝试将路径直接添加到 swank-clojure- .emacs、.emacs.d/init.el 和 .emacs.d/user/user.el 中的类路径,但没有任何作用。

我最终要做的是添加当前目录“。”以及我保存 Clojure 程序的目录。我假设 swank-clojure-classpath 是我需要在这里设置的东西。感谢您的帮助。

【问题讨论】:

    标签: emacs clojure classpath elpa


    【解决方案1】:

    正如mac所说,你可以使用

    M-x swank-clojure-project
    

    为 clojure 项目建立一个 slime REPL;该命令会询问您的项目根目录,并会建立一个包含各种目录的类路径,包括 src/lib/ 和 resources/(如果它们存在)。

    或者,如果您使用 leiningen,您可以在终端中使用命令启动它

    $ lein swank
    

    从您的项目根目录中。这将建立一个标准的项目类路径(如上)。从这里你可以通过 Emacs 使用命令连接到这个正在运行的进程

    M-x slime-connect
    

    最后,我推荐的第三个选项是通过 Emacs/slime(使用 M-x slime-connect)连接到由您自己的 shell 脚本启动的进程,该脚本指定一组自定义 JVM 命令行参数,例如

    #!/bin/bash 
    
    java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))"
    

    这使您可以明确控制 VM 的启动方式,并且很可能类似于您在生产中可能必须执行的操作。

    【讨论】:

      【解决方案2】:

      你想要:

      M-x swank-clojure-project
      

      这会在 /lib 目录中添加所有 jar。

      如果您想:使用 clojure 文件 (bar.clj),例如 /foo,您可以这样做:

      (ns foo
        (:use foo.bar)) 
      

      【讨论】:

        【解决方案3】:

        对不起,我不能帮你回答,但也许你的问题是错误的:

        我本人已经很久没有在 Emacs 中启动 clojure 会话了。我认为更好的方法是在一个地方描述所有依赖项(例如 maven pom.xml 或 leiningen 的 project.clj),然后使用这些依赖项开始一个 swank 会话。 IE。将swank-clojure lib 添加到您的(dev-)依赖项中,然后从命令行开始使用lein swankmaven swank(不确定最后一个- 没有用过那么多而且有一段时间没有)一个华丽的会话并使用M-x slime-connect 附加到该会话。

        优点是你可以在你的类路径中获得你需要的所有东西——而不是更多,所以你不会错误地使用你最终项目不知道的 repl 中的东西。

        This blog post gives a good summary how to do this right.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-06-11
          • 1970-01-01
          • 1970-01-01
          • 2012-02-11
          • 1970-01-01
          • 2011-12-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多