我正在尝试将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"]])
这是我的来源,我正在尝试要求lib:
(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 classpath:
company.clj:1:1:错误:java.io.FileNotFoundException:无法 找到instaparse / core__init.class或instaparse / core.clj classpath:(company.clj:1)
编译失败。
我检查了我的项目的classpath,我认为应该在那里找到instaparse。
lein classpath
C:\本科\测试; C:\本科\ SRC; C:\本科\ DEV-资源; C:\本科\资源; C:\本科\目标\类; C:\用户\ Maciej.m2 \库\ instaparse \ instaparse \ 1.1.0 \ instaparse-1.1.0.jar; C:\用户\的Mac iej.m2 \库\有机\ Clojure的\ Clojure的-的contrib \ 1.2.0 \ Clojure的-的contrib-1.2.0.jar; C:\用户\ Maciej.m2 \库\有机\ Clojure的\ Clojure的\ 1.5.1 \ Clojure的-1.5.1.jar
知道我做错了什么吗?
更新
我更新了lein classpath的结果。早些时候,我已经粘贴了旧的结果。
答案 0 :(得分:2)
这是一个工作示例项目:
project.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 /解析/ 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'+"))
REPL:
#<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奇怪解决方案清单:
答案 1 :(得分:0)
我发现了什么是错的。我正在与leiningen创建项目,但是使用Clojure-box或Clooj开发源代码。我也试图用这些工具编译我的源码,这是错误的。当你运行这样的IDE时,它加载了自己的类路径,这就是为什么它找不到我想要使用的库。现在我用
编译我的srclein compile
并在
中运行lein repl
一切都运转良好。