clojure - 找不到错误?

时间:2013-02-08 22:28:40

标签: oauth clojure leiningen

我现在正在尝试HOURS并且无法解决问题。 我是clojure的新手,并尝试制作一个简单的flickr客户端。 但我对不同的图书馆有这个问题...我认为我犯了一个普遍的错误。

目前我尝试将oauth与此lib一起使用: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变量中,但仍然是同样的错误。

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

2 个答案:

答案 0 :(得分: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',你的开发会更快。)

答案 1 :(得分:1)

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

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