2015-04-02 35 views
0

我是CLojure的新手,并运行一段简单的代码来测试data.csv package。我正在使用Leiningen并在Windows 7上运行(别无选择)。 Leiningen与Windows安装程序一起安装。 JDE 1.7已安装并可用。无法找到Clojure data.csv包

这里是我的源文件:

(ns testcsv.core 
    (:gen-class)) 

(:require [clojure.data.csv :as csv]) 
(:require [clojure.java.io :as io])) 


(defn add-data-store [] 
    (let [csv-records (csv/parse-csv (slurp "census_data_growth.csv")) ;field-names (nthnext (second csv-records) 3) 
     ] 
    ;; more code to come when this works 
)) 

这里是我的project.clj:

(defproject testcsv "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.6.0"] 
        [org.clojure/data.csv "0.1.2"]] 
    :main ^:skip-aot powernoodle1.core 
    :target-path "target/%s" 
    :profiles {:uberjar {:aot :all}}) 

我已经运行雷音DEPS和雷音类路径和雷音在许多组合编译。从雷音编译错误是:

java.lang.ClassNotFoundException: clojure.data.csv, compiling:(testcsv/core.clj:4:1) 

这似乎暗示它没有找到data.csv罐子,这将反过来又似乎在暗示一个类路径问题。

我错过了一个步骤吗?

我也听说Leiningen在Windows上有类路径问题。有没有人有具体细节?

+0

ClassNotFoundException是使用'require'错误的一个副作用,所以Clojure认为你要求的命名空间是一个它找不到的类。查看我的答案,了解如何正确使用require的详细信息。 – noisesmith 2015-04-02 21:13:22

回答

4

:require需要成为您的ns声明的一部分。该声明也应该只有一个:require条款。

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

require(函数,而不是关键字)可以在纳秒声明之外使用,多为REPL用法。它看起来像(require '[clojure.data.csv :as csv])

由于关键字的实现细节的过载是可用作功能进行查找,(:foo x)是从来没有一个错误,如果:foo是一些关键词,x存在,不管是什么x是。