使用ELPA安装后,如何在Emacs中设置Clojure类路径?
我试图在Clojure REPL中向我的类路径添加路径,这是我在Emacs中使用ELPA设置的。显然,这不是$CLASSPATH环境变量,而是swank设置的swank-clojure类路径变量。因为我使用ELPA安装了Swank、Clojure等,所以有大量的.el文件,而不是我的.emacs文件。不幸的是,我现在不知道如何更改类路径 在.emacs中的ELPA内容之前和之后,我都尝试过使用(setq'swank-clojure-extra-classpath(list…),并且我尝试过在.emacs、.emacs.d/init.el和.emacs.d/user/user.el中直接向swank-clojure-classpath添加路径,但没有任何效果 我最终要做的是添加当前目录“.”和保存Clojure程序的目录。我假设swank clojure类路径是我需要在这里设置的东西。谢谢您的帮助。您需要:使用ELPA安装后,如何在Emacs中设置Clojure类路径?,emacs,clojure,classpath,elpa,Emacs,Clojure,Classpath,Elpa,我试图在Clojure REPL中向我的类路径添加路径,这是我在Emacs中使用ELPA设置的。显然,这不是$CLASSPATH环境变量,而是swank设置的swank-clojure类路径变量。因为我使用ELPA安装了Swank、Clojure等,所以有大量的.el文件,而不是我的.emacs文件。不幸的是,我现在不知道如何更改类路径 在.emacs中的ELPA内容之前和之后,我都尝试过使用(setq'swank-clojure-extra-classpath(list…),并且我尝试过在.e
M-x swank-clojure-project
这将在/lib目录中添加所有JAR
如果您想:使用clojure文件(bar.clj),在例如/foo中,您可以执行以下操作:
(ns foo
(:use foo.bar))
很抱歉,我无法帮您回答,但您的问题可能是错误的: 我自己已经很久没有在Emacs内部启动clojure会话了。我认为更好的方法是在一个地方描述所有依赖项(例如maven
pom.xml
或leiningen的project.clj
),然后用这些依赖项启动swank会话。也就是说,将swank clojure
lib添加到您的(开发)依赖项中,然后从命令行使用lein-swank
或maven-swank
(不确定最后一个-没有用那么多,也没有用过一段时间)启动swank会话,并使用M-x slime connect
连接到该会话
这样做的好处是,您可以在类路径中获得所需的所有内容,而不是更多,因此您不能错误地使用repl中您最终项目不知道的内容
正如mac所说,您可以使用
M-x swank-clojure-project
建立clojure项目的slime REPL;该命令将询问您的项目根目录,并将建立一个类路径,其中包含各种目录,包括src/lib/和resources/(如果存在)
或者,如果您使用的是leiningen,则可以在终端中使用命令启动它
$ lein swank
M-x slime-connect
从项目根目录中。这将建立一个标准的项目类路径(如上所述)。从这里,您可以使用命令通过Emacs连接到这个正在运行的进程
$ lein swank
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的启动方式,并且很可能类似于您在生产中可能要执行的操作