Clojure调用java是非常简单的,总结一下作为新手碰到的问题:
添加本地jar依赖
这个SDK是没有在Maven Repo上的,从淘宝开放平台下载最新版的sdk-java-12195125.zip,解压得到两个jar(其中一个是source版的)。
下面就借助lein-localrepo这个插件将这个jar按照到maven仓库(lein-localrepo的安装参考[https://github.com/kumarshantanu/lein-localrepo])
首先将解压出来的jar改名为com.taobao.api-20160822.jar(为了跟其他库看起来一样),然后执行lein localrepo coords ~/Downloads/sdk-java-12195125/com.taobao.api-20160822.jar
会输出/Users/13k/Downloads/sdk-java-12195125/com.taobao.api-20160822.jar com.taobao.api/com.taobao.api 20160822
,后面那两个就是我们添加到maven仓库和project.clj :dependencies
里的库名和版本。
然后执行lein localrepo install ~/Downloads/sdk-java-12195125/com.taobao.api-20160822.jar com.taobao/api 20160822
,将jar 添加到本地Maven仓库中,注意最后两个参数是上一步执行coords输出的库名和版本号。
jar安装到Maven仓库之后将[commons-logging/commons-logging "1.2"]
和[com.taobao/api "20160822"]
添加到project.clj之后即可进行lein deps
import的问题
在完成上面准备之后启动REPL发现提示ClassNotFound的提示,一轮Google之后找不到答案,不过还好有面向QQ群编程,最终群里大神帮忙解决。我在core.clj的ns中使用import导入api,这个导致了前面的错误,正确的写法应该是使用:import
并且不用quote,import
在ns外面是可以正常导入api的。
终于可以愉快的使用API取数啦。