2012-12-30 30 views
3

我與咒術玩弄,因爲我學習Clojure的,當我嘗試下雷音創造REPL矩陣我不斷收到一條錯誤消息:無法在咒術創建矩陣1.4.0

user=> (use 'incanter.io) 
nil 
user=> (use 'incanter.core) 
nil 
user=> (def A (matrix [[1 2 3] [4 5 6] [7 8 9]])) 
NoSuchMethodError edu.emory.mathcs.utils.ConcurrencyUtils.getThreads 
BeginN_2D()Icern.colt.matrix.tdouble.impl.DenseColumnDoubleMatrix2D.assign (DenseColumnDoubleMatrix2D.java:661) 

它看起來像一個依賴性問題,但不知道如何解決這個問題。

+0

你使用哪種版本的焚燒爐?這適用於1.3.0,但不適用於1.4.0。 –

+0

啊,我使用的是1.4.0,我會驗證它是否適用於1.3.0,並在Github上提交問題(如果是這種情況)。 –

+0

@DiegoBasch你是對的。 –

回答

1

使用[org.clojure/clojure「1.4.0」]和[incanter「1.4.1」]命中相同的問題。 Def有一個類路徑陰影感覺。

難道在REPL下面找出哪個罐子ConcurrencyUtils來自何處:

(.getResource edu.emory.mathcs.utils.ConcurrencyUtils 
    "/edu/emory/mathcs/utils/ConcurrencyUtils.class") 

該指着jplasma。果然,jplasma有它自己的那個類的副本,它有各種方法,包括缺少getThreadsBeginN_2D。

綜觀(其次是「MVN依賴性:樹」,「雷音POM」)的DEPS表明這是一個依賴拉拽咒術1.4.1:

[INFO] | +- incanter:incanter-core:jar:1.4.1:compile 
[INFO] | | +- org.clojure:math.combinatorics:jar:0.0.3:compile 
[INFO] | | \- net.sourceforge.parallelcolt:parallelcolt:jar:0.10.0:compile 
[INFO] | |  +- net.sourceforge.jplasma:jplasma:jar:1.2.0:compile 

改變項目咒術入門.clj排除jplasma:

[incanter "1.4.1" 
    :exclusions [net.sourceforge.jplasma/jplasma]] 

這得到ConcurrencyUtils從jtransforms(因此仍然沒有從parallelcolt),但至少固定矩陣問題:

=> (matrix [[1 2 3] [4 5 6] [7 8 9]]) 
[1.0000 2.0000 3.0000 
4.0000 5.0000 6.0000 
7.0000 8.0000 9.0000] 

不確定排除的影響是什麼。有jplasma對不破矩陣clojars的舊版本,你可以嘗試加入,爲您的project.clj:

[incanter/jplasma "0.9.4"] 

這些DEPS顯然需要妥善雖然排序,被人誰瞭解他們。