需要在Lein REPL中使用core.async。

4
在一个新的 Lein (~2.5) repl 中,我输入:
 (require '[clojure.string :as string])

我可以像预期的那样使用字符串。然而,当尝试像这样要求core.asnc时,我会收到错误消息:

(require '[clojure.core.async :as ca])
FileNotFoundException Could not locate clojure/core/async__init.class or clojure/core/async.clj on classpath.  clojure.lang.RT.load (RT.java:449)

感谢您的回答,我现在可以使用pomegranate或alembic在运行时在repl中要求任意库了。但是宏呢?例如,如何在repl中获取“go”宏?没有像(require-macros...这样的东西,类比于在项目的ns声明中要求core.async的方法。


它在你的project.clj文件中吗? - jmargolisvt
可能是一个重复的问题,参见:Could not locate clojure/core/async__init.class or clojure/core/async.clj on classpath - jmargolisvt
你的编辑实际上是一个新问题。将其作为一个新问题发布会更容易引起关注,并保持原始问题的意图不变。问题并不是用来进行对话、跟进和“谢谢”的地方。 - jmargolisvt
1个回答

5

core.async 不是 clojure.core 库的一部分。您需要将 core.async jar 或源码添加到您的类路径中。最简单的方法是通过 project.clj 依赖进行添加,但也有像 pomegranatealembic 这样的工具可以在运行时进行添加,这些工具可以添加到您的本地 profiles.clj 中。


我检查了alembic,并将其添加到我的lein项目的依赖项中。在尝试在项目的repl中使用它时(如在git页面上描述的),我得到了这个错误信息:ClassNotFoundException alembic.still java.net.URLClassLoader.findClass (URLClassLoader.java:381)。 - Anton Harald
现在明白了,必须首先要 (require 'alembic.still)。 - Anton Harald
1
请注意,为了添加依赖项,alembic需要一个project.clj文件,而即使在没有项目文件的情况下运行,pomegranate也可以添加依赖项。 - noisesmith
是的,我刚刚弄明白了,现在两个都可以工作了。pom在“匿名”repl中工作。虽然我对这个工作流程的简单性并不印象深刻:(require ['cemerick.pomegranate :as 'pg]),(pg/add-dependencies :coordinates '[[mylib "0.1.0"]]),(require 'mylib)。看起来对于“只是检查库”的说法来说,用了太多的词语。 - Anton Harald
仅返回翻译后的文本:或者只是一个在user.clj中执行默认操作的简单函数。 - noisesmith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接