在clojure中使用google java api库

时间:2014-06-06 13:45:20

标签: java clojure

  1. 我试图通过Google要求一个java库并从Clojure调用它。
  2. 我根据groupId,artifactId和version将com.google.api-client/google-api-client添加到我的project.clj。
  3. lein deps不返回任何输出 - 似乎它成功设置了所有依赖项。
  4. 我检查了类路径,它包含google-api-client.jar (System/getProperty "java.class.path").
  5. user=>(require 'com.google.api-client/google-api-client)返回FileNotFoundException Could not locate google_api_client__init.class or google_api_client.clj on classpath: clojure.lang.RT.load (RT.java:443)
  6. 这是我的project.clj

    (defproject textsync "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.5.1"]
                     [com.google.api-client/google-api-client "1.18.0-rc"]
    

    我做错了什么?

2 个答案:

答案 0 :(得分:1)

您必须将一个java类导入clojure名称空间,如

(import 'org.apache.commons.lang.StringUtils) ;replace the java file with what you want

require仅用于导入其他clojure名称空间。在将java类导入clojure名称空间时,必须使用import。

答案 1 :(得分:1)

您很可能只需要导入所需的类。例如,您可能想尝试:

(import '[com.google.api.client.googleapis GoogleUtils]
        '[com.google.api.client.googleapis.services AbstractGoogleClient
                                                    AbstractGoogleClient$Builder])

请注意:

  1. 该课程拼写为com.google.api.client.googleapis.GoogleUtils(没有破折号)

  2. Java嵌套类的Clojure语法使用$