2013-02-08 35 views
1

Iam現在嘗試HOURS並且無法找出問題所在。Iam新增clojure並嘗試製作一個簡單的flickr客戶端。 但我對不同的圖書館有這個問題......我想我犯了一個普遍的錯誤。clojure - 找不到錯誤?

目前,我嘗試使用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 

And my 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

首先,lein run查找主名稱空間,其名稱必須使用:main鍵在project.clj中指定; add :main flickr.core there

然後你需要-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 [email protected]> 

這工作對我來說是一種「命名空間冒煙測試」,你應該能夠從那裏走。

(最後要注意,你的發展會更快,如果你測試這些種種的事情REPL,而不是用「雷音運行。」)

+0

聽起來不錯,謝謝!我明天會試一試... – Nico 2013-02-08 23:40:01

1

這似乎有一個與你的依賴關係的混亂。根據Clojars,你使用的圖書館clj-oauth2是這個GitHub項目https://github.com/DerGuteMoritz/clj-oauth2,而不是你在問題中鏈接到的那個。

如果你想要最新的clj-oauth,那麼依賴關係應該是[clj-oauth "1.4.0"](對於最新版本)。如果你需要clj-oauth2那麼上面的GitHub鏈接應該是參考。

+0

謝謝你的提示。 Iam實際上使用了clj-oauth。 clj-oauth2來自以前的測試。 – Nico 2013-02-08 23:37:11