2012-08-31 71 views
2

也許我錯過了一些東西或者只是讀過時的信息。基本上,我試圖使用CSV庫here什麼是使用依賴的正確方法?

我已經包括在我的project.clj ...

:dependencies [[org.clojure/clojure "1.3.0"] 
       [org.clojure/data.csv "0.1.2"]] 

...和檢索的成功使用Leiningen的庫。現在,包含這個庫在我的程序中使用的正確方法是什麼?我已經試過張貼的lib的Github的頁面上的例子只是爲了得到一個錯誤,指出:什麼我已經試過進一步澄清:

FileNotFoundException Could not locate clojure/data/csv__init.class or clojure/data/csv.clj on classpath: clojure.lang.RT.load (RT.java:430) 

編輯我已經在我的命名空間聲明粘貼代碼,如下所示:

(ns testprogram.core(:gen-class)) 
(require '[clojure.data.csv :as csv] 
     '[clojure.java.io :as io]) 

在REPL中嘗試它會得到相同的結果。我很確定我試圖把他們錯誤地包括進來。

+0

測試,請提供你如何執行導致錯誤的樣本更多細節。從REPL(從lein repl發起)? – noahlz

+0

@noahz對不起,編輯原始帖子,以澄清我正在嘗試。 – inline

+0

只要你使用命名空間宏,你應該使用require子句,即'(ns test.app(:require [clojure.data.csv:as csv] ...'等) - 這就是說我得到'找不到工件org.clojure/data:csv:jar:0.1.2在中央(http:// repo1.maven.org/maven2' – noahlz

回答

1

這個測試工作對我來說工作:

(ns test.csv-test 
    (:gen-class) 
    (:require [clojure.data.csv :as csv] 
      [clojure.java.io :as io])) 

(defn main- [args] 
(csv/read-csv "test")) 

我在測試這個時遇到了「FileNotFound:could not locate」問題。這是我的project.clj文件中的一個簡單的錯字。我建議仔細檢查一下。

注:此還曾:

(require '[clojure.data.csv :as csv] 
     '[clojure.java.io :as io]) 
(defn main- [args] 
(csv/read-csv "test")) 

當使用:require指令在ns宏觀無疑是一個最好的做法,是不是問題,這裏的來源。

在這兩個版本,REPL輸出:

user=> (in-ns 'test.csv-test) 
#<Namespace test.csv-test> 
test.csv-test=> (main- []) 
(["test"]) 

還與lein runjava -cp <uberjar> test.csv_test

+0

嗯,同樣的錯誤,它可能與Windows有關嗎?我的意思是,我可以在我的target/classes/clojure /中看到包含CSV庫的文件夾,所以我很確定它已經使用「lein deps」正確安裝。 順便問一句,你的錯字是? – inline

+0

'org.clojure/data/csv'而不是'org.clojure/data.csv' – noahlz

+0

呃,不。這也不是問題。 奇怪的是我可以編譯/ uberjar並運行jar沒有錯誤。在Clooj重新評估時,它會一直給我那個錯誤。 – inline

1

您可以嘗試以下操作:請注意:require嵌套在ns聲明中。這是做這件事的首選方式。

(ns testprogram.core(:gen-class) 
(:require [clojure.data.csv :as csv] 
      [clojure.java.io :as io])) 

我覺得你的情況,你可以得到它具有以下(未測試)

(ns testprogram.core(:gen-class)) 
(require '(clojure.data [csv :as csv]) 
     '(clojure.java [io :as io])) 

請參見下面的說明

http://clojure.github.com/clojure/clojure.coreapi.html#clojure.core/require

+0

這並沒有回答這個問題,這不是一個最佳實踐問題,它是一個「幫助修復我的錯誤」的問題 – noahlz

相關問題