gpt4 book ai didi

clojure - 使用外部依赖项加载 my-project.core 时出现 FileNotFoundException

转载 作者:行者123 更新时间:2023-12-02 13:20:30 26 4
gpt4 key购买 nike

当尝试使用外部库时,我在 Clojure REPL 中收到 FileNotFoundException 。例如,我使用 lein new example-twitter-project 创建一个新项目。然后我编辑文件:

project.clj:

(defproject example-twitter-project "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.3.0"]
[clojure-twitter "1.2.6-SNAPSHOT"]])

src/example-twitter-project/core.clj:

(ns example-twitter-project.core
(:use 'twitter))

然后我运行 lein deps,然后运行 ​​lein repl

example-twitter-project$ lein repl
REPL started; server listening on localhost port 23833
user=> (use :reload-all 'example-twitter-project.core)
FileNotFoundException Could not locate quote/twitter__init.class or quote/twitter.clj on classpath: clojure.lang.RT.load (RT.java:430)

同时,我可以直接使用 REPL 中的外部库:

user=> (use 'twitter)
nil
user=> (doc twitter/with-oauth)
-------------------------
twitter/with-oauth
([consumer access-token access-token-secret & body])
Macro
Set the OAuth access token to be used for all contained Twitter requests.
nil

我应该怎么做才能在项目中使用这个外部库?

如果我添加 -main 函数并尝试运行脚本,我会得到类似的 FileNotFoundException,所以这不仅仅是 REPL 问题。

Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: Could not locate quote/twitter__init.class or quote/twitter.clj on classpath: 
at clojure.lang.Util.runtimeException(Util.java:165)
...
Caused by: java.io.FileNotFoundException: Could not locate quote/twitter__init.class or quote/twitter.clj on classpath:
at clojure.lang.RT.load(RT.java:430)
...

请注意,库的名称及其命名空间是不同的。难道是这个原因?

附注lein 版本:Java 1.6.0_24 OpenJDK 64 位服务器 VM 上的 Leiningen 1.7.1

最佳答案

ns 声明中,您不需要引用 ns 名称,而在 use 表达式中,您必须引用它们

(ns example-twitter-project.core
(:use twitter))

这是因为 ns 宏在计算参数之前先看到它的参数,它看到符号 twitter 而不是查找 twitter 的值。当从 REPL 调用 use 时,符号 twitter 将在 use 看到它之前被评估,除非您使用 quote 来防止这种情况。

关于clojure - 使用外部依赖项加载 my-project.core 时出现 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912511/

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