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
Intellij idea 如何使用clojure REPL(La clojure)加载具有依赖项的单个clojure文件?_Intellij Idea_Clojure_La Clojure - Fatal编程技术网

Intellij idea 如何使用clojure REPL(La clojure)加载具有依赖项的单个clojure文件?

Intellij idea 如何使用clojure REPL(La clojure)加载具有依赖项的单个clojure文件?,intellij-idea,clojure,la-clojure,Intellij Idea,Clojure,La Clojure,我正在使用IntelliJ IDEA的La Clojure插件加载我的clj文件,然后检索该文件中的函数。 我的Test.clj文件包含以下内容: (ns test.Test (:require [clojure.tools.logging :as logger]) ) (defn addx [a b c] (logger/debug "adding...") (+ a b c)) 在Clojure REPL控制台上,我试图通过以下方式加载文件: (load-file "

我正在使用IntelliJ IDEA的La Clojure插件加载我的clj文件,然后检索该文件中的函数。 我的Test.clj文件包含以下内容:

(ns test.Test
  (:require [clojure.tools.logging :as logger])
 )

 (defn addx [a b c]
   (logger/debug "adding...")
   (+ a b c))
在Clojure REPL控制台上,我试图通过以下方式加载文件:

(load-file "/home/.../test/Test.clj")
这给了我下一个错误:

FileNotFoundException在类路径:clojure.lang.RT.load(RT.java:443)上找不到clojure/tools/logging\uu init.class或clojure/tools/logging.clj

有人能告诉我我做错了什么吗


多谢各位

导致错误的原因是类路径(用于启动Clojure REPL的路径)不包括
Clojure.tools.logging
Test.clj
需要它,因此REPL在加载它时无法找到所需的包,因此出现错误

我不确定如何启动REPL,但答案的其余部分假设这是终端中的常规REPL(不是从IntelliJ IDEA本身开始的;如果REPL是从IntelliJ IDEA开始的——我会说这是最后一个的错误配置,因为它应该用正确的项目类路径开始REPL——首先要检查的是项目配置)

为了解决这个问题,请确保REPL具有所有依赖项(在本例中-
clojure.tools.logging
)例如,可能最简单的方法是添加一个声明了依赖项的
project.clj
,然后使用Lieningen启动REPL.Bare bones
project.clj
,这样做的技巧是:

(defproject my-project "0.0.1-SNAPSHOT"
  :dependencies [[org.clojure/tools.logging "0.3.1"]])
现在,从
project.clj
所在的目录:

$ lein repl 
...
user=> (load-file "Test.clj")
#'test.Test/addx
user=> (test.Test/addx 13 9 20)
42
或者,如果您想使用“纯Clojure REPL no Leiningen”,您应该在本地拥有依赖项jar文件(例如,从下载),然后您可以在启动REPL时将它们添加到类路径中:

$ java -cp /path/to/clojure.jar:/path/to/tools.logging-0.3.1.jar clojure.main

它通常会给出相同的结果。

la clojure
不再受支持。它已被
草书
取代。您是否有使用
LeinGen
的项目设置?谢谢,伙计。我通过“lein repl”命令从终端运行repl解决了问题。谢谢,帖木儿。这非常有用。