【问题标题】:clojure - could not locate errors?clojure - 找不到错误?
【发布时间】:2013-02-08 22:28:40
【问题描述】:

我现在正在尝试 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 变量中,但仍然是同样的错误。

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

【问题讨论】:

    标签: oauth clojure leiningen


    【解决方案1】:

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

    那么你需要flickr.core 中的-main 函数。更改命名空间声明并添加如下函数:

    (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',你的开发将会更快。)

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢您的提示。我实际上使用的是 clj-oauth。 clj-oauth2 来自之前的测试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多