使用特定的clojure java-wrapper而不使用project.clj

时间:2016-12-27 23:37:39

标签: java maven clojure leiningen

我尽量避免提出那些不会帮助其他人的问题,但是我已经这么长时间不去寻求帮助了。我试图在我的项目中使用this clojure wrapper for a java package作为依赖项,但我遇到了很多错误,因为没有project.clj。

我尝试在我的project.clj中使用lein-git-deps插件和以下键:

:plugins [[lein-git-deps "0.0.1-SNAPSHOT"]]
:git-dependencies [["https://github.com/lunkdjedi/clj-ta-lib"]]

正在运行$ lein git-deps会给我以下内容:

Setting up dependency for  [https://github.com/lunkdjedi/clj-ta-lib]
Running git pull on  .lein-git-deps
Running git checkout  master  in  .lein-git-deps

但我的本地目录没有任何变化,除非现在有一个空的.lein-git-deps/目录。我假设由于缺少project.clj而无法正常工作。

我已经能够克隆项目并调用成功编译并打开REPL实例的$ mvn package clojure:repl,我可以在其中完美地使用包装器。当我运行$ lein install时,它会给我:

Couldn't find project.clj, which is needed for install

但是当我运行$ mvn install时,它会给我一个BUILD SUCCESS,可以在~/.m2/repositories/clj-ta-lib中找到。

我将:dependencies [[clj-ta-lib/clj-ta-lib "0.0.1"]]放入project.clj并重新启动REPL但是当我拨打(use 'clj-ta-lib.core)时,我得到了:

CompilerException java.lang.Exception: namespace 'clj-ta-lib.core' not found, compiling:(*cider-repl app*:71:13) 

编辑:

不再收到上一个错误,但仍然会收到此错误:

CompilerException java.lang.IllegalArgumentException: No matching ctor found for class com.tictactec.ta.lib.meta.PriceHolder, compiling:(clj_ta_lib/core.clj:13:3) 

2 个答案:

答案 0 :(得分:1)

你说你做过的事听起来很合理。遗憾的是,这个项目并没有托管在clojars或maven中心,但至少有一个pom允许你自己轻松地发布或安装它。 mvn install是正确的做法,当我自己克隆项目并安装它时,一切都安装正常,就像你说的那样。

但是,在尝试使用该库时,我无法重现您的错误。安装之后,我创建了一个新项目,它取决于刚刚安装的工件,在该项目的repl中,我可以很好地使用库的类。或者,我不知道如何使用这些功能,但这些功能可供我使用:

user=> (use 'clj-ta-lib.core)
nil
user=> ta
#<core$ta clj_ta_lib.core$ta@c668834>

所以我要说,确保你确实遵循了你所说的所有步骤,并且你的repl已经在项目中干净利落地开始了,这取决于你的库。

答案 1 :(得分:-1)

如前所述,https://mvnrepository.com/artifact/com.tictactec/ta-lib/0.4.0只是将[com.tictactec / ta-lib“0.4.0”]添加到依赖项中 在你的project.clj。

:dependencies [[com.tictactec/ta-lib "0.4.0"]]