1

我现在正在尝试 HOURS 并且无法找出问题所在。我是 clojure 的新手,并尝试制作一个简单的 flickr 客户端。但是我对不同的库有这个问题......我想我犯了一个普遍的错误。

目前我尝试在这个库中使用 oauth:https ://github.com/mattrepl/clj-oauth

lein new projectname

我的 project.clj 看起来像这样:

(defproject flickr "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
          :url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.4.0"]
               [clj-oauth "1.4.0"]])

添加 clj-oauth2 后,我运行:

  lein deps

还有我的 core.clj:

  (ns flickr.core)
  (require ['oauth.client :as 'oauth])


 (def consumer-key "0000")
 (def consumer-secret "0000")

 (def consumer (oauth.client/make-consumer <consumer-token>
                               <consumer-token-secret>                            
                               "http://www.flickr.com/services/oauth/request_token"
                               "http://www.flickr.com/services/oauth/access_token"
                               "http://www.flickr.com/services/oauth/authorize"
                                :hmac-sha1))

当我现在尝试运行它时:

   lein run

我得到:

   FileNotFoundException Could not locate oauth/client__init.class or oauth/client.clj on classpath:   clojure.lang.RT.load (RT.java:432)

有谁知道问题出在哪里?还从 github repo 下载了 oauth 源,构建它并将其添加到我的 $PATH 变量中,但仍然是相同的错误。

任何帮助,将不胜感激!谢谢!

4

2 回答 2

2

首先,lein run查找一个主命名空间,其名称必须在project.clj使用:main键中指定;在那里添加:main flickr.core

然后你需要一个-main函数flickr.core。更改命名空间声明并添加函数,如下所示:

(ns flickr.core
  (:require [clj-oauth2.client :as oauth]))

(defn -main []
  (println oauth/get-access-token))

然后,

$ lein run
;=> #<client$get_access_token clj_oauth2.client$get_access_token@4c9549af>

这对我来说是一种“命名空间冒烟测试”,你应该可以从那里开始。

(最后一点,如果你在 REPL 中测试这些东西,而不是使用 'lein run',你的开发速度会快得多。)

于 2013-02-08T23:02:06.680 回答
1

您的依赖项似乎存在混淆。根据 Clojars 的说法,您使用的库clj-oauth2是这个 GitHub 项目https://github.com/DerGuteMoritz/clj-oauth2,而不是您在问题中链接到的那个。

如果您想要 latest clj-oauth,那么依赖项应该是[clj-oauth "1.4.0"](对于最新版本)。如果你需要clj-oauth2,那么上面的 GitHub 链接应该是参考。

于 2013-02-08T23:12:21.447 回答