2015-11-19 40 views
1

昨天晚上我花了一些时间弄乱了我的leinigen profiles.clj,以摆脱在我的项目中启动苹果酒时所打印的所有错误。今天,我去了终端(我喜欢在工作时保持开放),但它不起作用。我认为这是一个苹果酒问题,所以我尝试了Emacs,但即使在Emacs中,如果我不在项目中,repl也不会启动。如何在项目之外运行lein repl?

这里的错误:

Error loading refactor-nrepl.middleware: clojure.lang.ArityException: Wrong number of args (4) passed to: StringReader, compiling:(abnf.clj:186:28) 
Exception in thread "Thread-4" java.lang.RuntimeException: Unable to resolve var: refactor-nrepl.middleware/wrap-refactor in this context, compiling:(NO_SOURCE_PATH:0:0) 
... 
Caused by: java.lang.RuntimeException: Unable to resolve var: refactor-nrepl.middleware/wrap-refactor in this context 

我的〜/ .lein/profiles.clj

{:user {:plugins [[lein-try "0.4.3"] 
        [refactor-nrepl "1.1.0"] 
        [cider/cider-nrepl "0.9.1"]] 
     :dependencies [[org.clojure/tools.nrepl "0.2.12"] 
         [acyclic/squiggly-clojure "0.1.4"] 
         ^:replace [org.clojure/tools.nrepl "0.2.12"] 
         [refactor-nrepl "1.1.0"]]}} 

事物的版本时苹果酒在项目

; CIDER 0.9.1 (Java 1.8.0_45, Clojure 1.7.0, nREPL 0.2.12)

开始对于Clojure,Leinigen,Emacs等我还是很新的,所以我不确定为什么每一个g以上使得我的苹果酒错误消失了,但它确实发生了。我得到的苹果酒错误与nrepl版本过低有关,并没有安装某些东西(如refactor-nrepl)。

回答

0

当使用lein repl从lein开始repl时,它确实想要在lein项目目录中运行。为了这个目的,我在我的家里保留一个名为clj的空白lein项目。这样,我的共同依赖已经在project.clj文件中,lein按照我喜欢的方式进行了预配置。

您可以在空目录中启动lein repl,但每次启动前您都会收到10-20条错误消息。

另一种方法是使用内置到Clojure的jar文件中平原REPL:

~/dummy > cp /home/alan/.m2/repository/org/clojure/clojure/1.8.0-RC1/clojure-1.8.0-RC1.jar . 
~/dummy > d * 
-rw-rw-r-- 1 alan alan 3935726 Nov 19 14:11 clojure-1.8.0-RC1.jar 
~/dummy > java -jar clojure-1.8.0-RC1.jar 
Clojure 1.8.0-RC1 
user=> 

正如你所看到的,我创建了一个名为dummy,并在clojure-*.jar文件复制一个空目录。然后你可以用语法java -jar xxx.jar来运行它,它将完全独立于lein而启动一个repl。

+0

我知道我可以做一个空的项目,这是我最终可能做的。这只是我挠头,我曾经能够在任何地方发射,现在我不能。 –

0

我也只是保持划伤项目,我用于快速/简单repl会话。有一个留置权oneoff插件,它可以使简单的单文件lein项目变得简单,这可能是有用的。

你可以做的另一件事是设置为基本上得到一个REPL了

0

工作你有什么雷音版本的引导配置,我用2.5.3,我可以在任何地方开始lein repl

Shell:~ >: lein repl 
nREPL server started on port 52343 on host 127.0.0.1 - nrepl://127.0.0.1:52343 
REPL-y 0.3.7, nREPL 0.2.10 
Clojure 1.7.0 
Java HotSpot(TM) 64-Bit Server VM 1.8.0_60-b27 
    Docs: (doc function-name-here) 
      (find-doc "part-of-name-here") 
    Source: (source function-name-here) 
Javadoc: (javadoc java-object-or-class-here) 
    Exit: Control+D or (exit) or (quit) 
Results: Stored in vars *1, *2, *3, an exception in *e 

user=> Bye for now! 
Shell:~ >: lein version 
Leiningen 2.5.3 on Java 1.8.0_60 Java HotSpot(TM) 64-Bit Server VM 

Shell:~ >: cat .lein/profiles.clj 
{:1.2 {:dependencies [[org.clojure/clojure "1.2.0"]]} 
:1.3 {:dependencies [[org.clojure/clojure "1.3.0"]]} 
:1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]} 

:user {:plugins [[lein-immutant "2.0.0-alpha2"] 
        [lein-clojars "0.9.1"] 
        [lein-ancient "0.5.5"] 
        [lein-kibit "0.0.8"] 
        [lein-try "0.4.3"] 
        [venantius/ultra "0.2.0"]] 
     :ultra {:color-scheme :solarized_dark}}} 
+0

雷音REPL(一个项目)'nREPL服务器开始端口55164主机127.0.0.1 - nrepl://127.0.0.1:55164 REPL-Y 0.3.5,nREPL 0.2.12 Clojure的1.7.0' lein -v '在Java 1.8.0_45上的Leiningen 2.5.1 Java HotSpot(TM)64位服务器VM' –