gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:32:52 26 4
gpt4 key购买 nike

我正在使用 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 Could not locate clojure/tools/logging__init.class or clojure/tools/logging.clj on classpath: clojure.lang.RT.load (RT.java:443)

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

谢谢。

最佳答案

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

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

因此,要解决此问题,请确保 REPL 在类路径中具有所有依赖项(在本例中为 clojure.tools.logging)。例如,可能最简单的事情就是添加一个 project.clj 并在其中声明依赖项,然后使用 Lieningen 启动 REPL。可以解决问题的基本 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 文件(例如,从 Maven Central 下载),然后您可以在启动 REPL 时将它们添加到类路径中:

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

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

关于intellij-idea - 如何使用 Clojure REPL (La Clojure) 加载具有依赖项的单个 clojure 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33144293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com