clojure类路径(?)很难用leiningen加载代码和依赖项

clojure类路径(?)很难用leiningen加载代码和依赖项,clojure,classpath,leiningen,Clojure,Classpath,Leiningen,我是Clojure和JVM的初学者,构建工具让我有点困惑,所以请原谅我将要执行的愚蠢行为。我不知道什么是“类路径”。。。我只想要一个有很多库的Lisp 但我正试图用Clojure编写一个简单的文本挖掘代码,但我似乎无法让事情正常进行 有两个问题,我认为它们是相关的,都可能与javaland的类路径有关,而Clojure的介绍性书籍似乎都没有解释过 我使用lein new启动项目,我的project.clj具有以下依赖性: :dependencies [[org.clojure/clojure

我是Clojure和JVM的初学者,构建工具让我有点困惑,所以请原谅我将要执行的愚蠢行为。我不知道什么是“类路径”。。。我只想要一个有很多库的Lisp

但我正试图用Clojure编写一个简单的文本挖掘代码,但我似乎无法让事情正常进行

有两个问题,我认为它们是相关的,都可能与javaland的类路径有关,而Clojure的介绍性书籍似乎都没有解释过

我使用
lein new
启动项目,我的project.clj具有以下依赖性:

 :dependencies [[org.clojure/clojure "1.6.0"] 
                 [clj-fuzzy "0.1.8"]
                 [snowball-stemmer "0.1.0"]
                 [net.mikera/core.matrix "0.50.0"]])
my core.clj的相关ns调用如下:

(ns blabber.core 
  (:require 
    [clojure.string :refer [lower-case split]]
    [clojure.walk :refer [keywordize-keys]]))
我的目录结构是leiningen用于新库的默认设置

第一个问题

我从前面的讨论中得出结论,如果设置正确,我不需要在调用
(使用'blabber.core)
之前调用repl中的
(加载文件“src/blabber/core.clj”)
。(我正在从bash中的src/blabber目录启动lein repl)。但当我启动repl时,除非我首先调用load file,否则use将失败。那么这是否意味着我的类路径设置错误?那么,如何解决这样的问题呢

第二个问题

好的,现在我尝试实际使用core.matrix。my core.clj的第一行更改为:

(ns blabber.core 
  (:require 
    [clojure.string :refer [lower-case split]]
    [clojure.walk :refer [keywordize-keys]]
    [clojure.core.matrix :refer [dataset]]))
当我第一次用这个project.clj启动repl,但是没有core.matrix的
:require
,leiningen高兴地从clojars中获取core.matrix:
检索net/mikera/core.matrix/0.50.0/core.matrix-0.50.0.jar

但是,在实际代码中包含
:require
到core.matrix并再次启动repl后,在repl处我调用
(加载文件“src/blabber/core.clj”)
,并得到以下错误:

CompilerException java.io.FileNotFoundException:在类路径上找不到clojure/core/matrix__init.class或clojure/core/matrix.clj,编译:(/Users/pauliglot/github/blabber/src/blabber/core.clj:1:1)

我正在Java 1.8.045上使用Leiningen 2.5.1。我只是在遵循core.matrix

发生了什么事?为什么JVM找不到我的东西?救我?谢谢

如果有帮助,下面是
lein classpath的输出转储

/Users/pauliglot/github/blabber/test:/Users/pauliglot/github/blabber/src:/Users/pauliglot/github/blabber/dev resources:/Users/pauliglot/github/blabber/target/classes:/Users/pauliglot/.m2/repository/clj fuzzy/clj fuzzy/0.1.8/clj-fuzzy-0.1.8.jar:/Users/pauliglot/m2/repository/snowball stemmer/stemmer/0.1.0/snowball-stemmer-0.1.0.jar:/Users/paliglot/.m2/repository/org/clojure/tools.macro/0.1.5/tools.macro-0.1.5.jar:/Users/paliglot/.m2/repository/clojure complete/clojure complete/0.2.3/clojure-complete-0.2.3.jar:/Users/palit/.m2/repository/org/clojure/google闭包库第三方/0.0-20140226-7132607/google-closure-library-third-party-0.0-20140226-71326067.jar:/Users/paliglot/.m2/repository/com/google/protobuf/protobuf-java/2.4.1/protobuf-java-2.4.1.jar:/Users/paliglot/.m2/repository/org/clojure/googleclosure-library/0.0-20140226-71326067/google-closure-library-0.0-20140226-71326067.jar:/Users/paliglot/.m2/repository/org/mozilla/rhino/1.7Rhino/rhino/1.jar:/4auliglot/.m2/repository/org/json/json/20090211/json-20090211.jar:/Users/paliglot/.m2/repository/net/mikera/core.matrix/0.50.0/core.matrix-0.0.jar:/Users/paliglot/.m2/repository/com/google/javascript/closure编译器/v20131014/closure-compiler-v20131014.jar:/Users/paliglot/.m2/repository/com/google/code/findbugs/jsr305/1.3.9.jar:/Users/pauliglot/.m2/repository/org/clojure/clojurescript/0.0-2202.jar:/Users/pauliglot/.m2/repository/args4j/args4j/2.0.16/args4j-2.0.16.jar:/Users/pauliglot/.m2/repository/org/clojure/tools.nrepl/0.2.6/tools.nrepl/0.2.2.6.jar:/Users/pauliglot/.m2/repository/com/google/guava/guava/15.0/guava/15.0/guava/m2/jar/Userssitory/org/clojure/clojure/1.6.0/clojure-1.6.0.jar:/Users/paliglot/.m2/repository/org/clojure/tools.reader/0.8.3/tools.reader-0.8.3.jar:/Users/paliglot/.m2/repository/org/clojure/data.json/0.2.3/data.json-0.3.jar

编辑 这是目录树: |喋喋不休 |-医生 |-资源 |-src |---喋喋不休 |-目标 |---班级 |-----META-INF |-------马文 |---------喋喋不休 |-----------喋喋不休 |---陈腐的 |-试验


我所有的代码都在blabber/src/blabber/core.clj中,类路径是一个Java概念;Leiningen应该正确设置类路径。我怀疑目录、文件名或命名空间声明之间存在不匹配。文件路径应该是
/src/blabber/core.clj。
从您编写的内容中不清楚是否是这种情况。试着先运行
lein deps
,但你不需要这样做。这和
lein repl
通常从目录运行,即项目根目录。您可能需要project.clj中的
:源路径
:main
,但我不这么认为

(使用'clojure.core.matrix)
应该可以工作。为我工作,例如与

(defproject blabber "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.8.0"]
  [net.mikera/core.matrix "0.50.0"]]). 

类路径是一个Java概念;Leiningen应该正确设置类路径。我怀疑目录、文件名或命名空间声明之间存在不匹配。文件路径应该是
/src/blabber/core.clj
。从你写的东西看不清楚情况是否如此。试着先运行
lein deps
,但你不需要这样做。这和
lein repl
通常从
目录运行。您可能需要project.clj中的
:源路径
:main
,但我不这么认为。我很好