2016-12-27 51 views
2

我儘量避免提問對其他人不起作用的問題,但是我一直在這個問題上拖得太久而不願意尋求幫助。我試圖在我的項目中使用this clojure wrapper for a java package作爲依賴項,但是我遇到了很多錯誤,因爲沒有project.clj。在沒有project.clj的情況下使用特定的clojure java-wrapper

我使用雷音-混帳DEPS插件在我project.clj以下鍵嘗試:

: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

我已經能夠克隆該項目,並呼籲$ mvn package clojure:repl成功編譯並打開一個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) 

回答

1

你說你做的東西聽起來很合理。很遺憾,這個項目不是在clojars或maven central上託管的,但至少可以讓你自己發佈或安裝它。 mvn install是正確的做法,當我自己克隆項目並安裝它時,正如您所說的那樣,一切都安裝正常。

但是,嘗試使用該庫時,我無法重現您的錯誤。安裝完成後,我創建了一個依賴剛剛安裝的工件的新項目,並且在該項目中的repl中,我可以很好地使用庫的類。或者說,好,我不知道如何使用這些發揮預期的作用,但功能可爲我用:

user=> (use 'clj-ta-lib.core) 
nil 
user=> ta 
#<core$ta [email protected]> 

所以我說,要確保你確實遵循所有的步驟你說你做了,而且你的repl已經在依賴於你的圖書館的項目裏面乾淨地開始了。

+0

我重新啓動了這個過程,並得到了另一個錯誤,一個我以前看過但沒有看到我編譯這篇文章時看到的錯誤。查看更新 – v4gil

+0

更新中的錯誤可能是依賴版本不匹配。刪除你自己對你要使用的java庫的依賴,並讓clojure包裝器的傳遞依賴爲你完成工作。事實上,在clojure包裝上嘗試一個只有*一個*依賴的項目。如果可行,開始添加依賴關係直到找到問題。 – amalloy

+0

這樣做!感謝您的指導,我也很享受4Clojure。有一天你可以將它作爲基於clojure的AGI的測試平臺! – v4gil

-1

如上所述,https://mvnrepository.com/artifact/com.tictactec/ta-lib/0.4.0只需在您的project.clj中將[com.tictactec/ta-lib「0.4.0」]添加到依賴關係 。

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

這個問題不是關於如何獲得java庫,而是如何獲得爲它提供基於clojure的接口的clojure庫。 – amalloy

相關問題