3

我正在尝试将instaparse lib 用于我的 clojure 项目。我在我的项目依赖项中使用 leiningen 2.0 和 clojure 1.5.1。我将 instaparse 添加到我的项目依赖项中,如下所示:

(defproject bachelor "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.5.1"]
         [org.clojure/clojure-contrib "1.2.0"]
         [instaparse "1.1.0"]])

这就是我试图要求该库的来源:

(ns bachelor.data
  (:require [clojure.string :as str])
  (:require [instaparse.core :as insta])
  (:use [clojure.contrib.generic.math-functions])
  )

当我尝试编译时,我收到以下错误消息:

cd c:/bachelor/src/bachelor.data/ 1 编译器注释:

未知位置:错误:java.io.FileNotFoundException:无法在类路径上找到 instaparse/core__init.class 或 instaparse/core.clj:

company.clj:1:1: 错误: java.io.FileNotFoundException: 无法在类路径上找到 instaparse/core__init.class 或 instaparse/core.clj: (company.clj:1)

编译失败。

我检查了我的项目的类路径,我认为应该在那里找到 instaparse。

lein 类路径

C:\bachelor\test;C:\bachelor\src;C:\bachelor\dev-resources;C:\bachelor\resources;C:\bachelor\target\classes;C:\Users\Maciej.m2\repository\ instaparse\instaparse\1.1.0\instaparse-1.1.0.jar;C:\Users\Mac iej.m2\repository\org\clojure\clojure-contrib\1.2.0\clojure-contrib-1.2.0.jar; C:\Users\Maciej.m2\repository\org\clojure\clojure\1.5.1\clojure-1.5.1.jar

知道我做错了什么吗?

更新

我更新了 lein 类路径的结果。早些时候,我已经粘贴了旧的结果。

4

2 回答 2

2

这是一个工作示例项目:

项目.clj:

(defproject parse "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.5.1"]
                 [instaparse "1.1.0"]])

您不需要 contrib 的行,并且 string 现在已内置到 clojure 中。

src/parse/core.clj:

(ns parse.core
  (:require [instaparse.core :as insta]
            [clojure.string :as str]))
(def as-and-bs
  (insta/parser
   "S = AB*
     AB = A B
     A = 'a'+
     B = 'b'+"))

回复:

#<Namespace parse.core>
parse.core>  (as-and-bs "aaaaabbbaaaabb")
[:S [:AB [:A "a" "a" "a" "a" "a"] [:B "b" "b" "b"]] [:AB [:A "a" "a" "a" "a"] [:B "b" "b"]]]
parse.core> (str/join "," ["a" "b" "c"])                                                                                                                                  
"a,b,c" 

我的一般 Liningen 奇怪解决清单:

  • 运行 lein deps 并重新启动 nrepl/emacs
  • lein clean 并重新启动 nrepl/emacs
  • 删除本地库目录(lein v1.x)
  • 删除我的本地 maven 存储库并运行 lein deps
于 2013-07-02T19:43:52.743 回答
0

我发现出了什么问题。我正在使用 leiningen 创建项目,但使用 Clojure-box 或 Clooj 开发源代码。我还尝试使用该工具编译我的源代码,但这是错误的。当您运行这样的 IDE 时,它会加载自己的类路径,这就是为什么它找不到我想使用的库的原因。现在我编译我的 src

lein 编译

并运行它

莱因雷普

一切正常。

于 2013-07-03T14:17:47.683 回答