我是CLojure新手,我运行了一段简单的代码来测试data.csv包。我正在使用Leiningen并在Windows 7上运行(别无选择)。Leiningen是与Windows安装程序一起安装的。已安装并提供JDE1.7。
这是我的源文件:
(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}})我已经运行lein和lein和lein编译了许多组合。来自lein编译的错误是:
java.lang.ClassNotFoundException: clojure.data.csv, compiling:(testcsv/core.clj:4:1)这似乎意味着它没有找到data.csv jar,而这反过来又意味着类路径问题。
我错过了一步吗?
我还听说Leiningen在Windows上有类路径问题。有人知道具体情况吗?
发布于 2015-04-02 21:02:11
:require需要成为ns声明的一部分。此外,声明应该只有一个:require子句。
(ns testcsv.core
(:gen-class)
(:require [clojure.data.csv :as csv]
[clojure.java.io :as io]))require (函数,而不是关键字)可以在ns声明之外使用,主要用于repl使用。它看起来会像(require '[clojure.data.csv :as csv])。
由于关键字被重载以作为函数执行查找的实现细节,所以如果(:foo x)是某个关键字,并且x存在,那么无论x是什么,x都不会是一个错误。
https://stackoverflow.com/questions/29421951
复制相似问题