Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ELPA安装后,如何在Emacs中设置Clojure类路径?_Emacs_Clojure_Classpath_Elpa - Fatal编程技术网

使用ELPA安装后,如何在Emacs中设置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

我试图在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类路径是我需要在这里设置的东西。谢谢您的帮助。

您需要:

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的启动方式,并且很可能类似于您在生产中可能要执行的操作