Clojure FileNotFoundException与Leiningen和Ring

Clojure FileNotFoundException与Leiningen和Ring,clojure,leiningen,ring,Clojure,Leiningen,Ring,我目前正在通过命令行使用Leiningen和Ring进行一个名为试剂测试的项目,我遇到了一个问题: C:/...reagent_test>lein ring server ... huge chunk of errors Caused by: java.io.FileNotFoundException: Could not locate reagent_test/core__init.class or reagent_test/core.clj on classpath. Please c

我目前正在通过命令行使用Leiningen和Ring进行一个名为
试剂测试的项目,我遇到了一个问题:

C:/...reagent_test>lein ring server
... huge chunk of errors
Caused by: java.io.FileNotFoundException: Could not locate reagent_test/core__init.class or reagent_test/core.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.
... more errors
如果有人想知道这个问题的要点,如果需要的话,我会做一个

问题是,文件都放在正确的位置。这是我的
项目。clj

(项目试剂测试“0.1.0-SNAPSHOT”
:description“修复:写入描述”
:url“http://example.com/FIXME"
:许可证{:名称“Eclipse公共许可证”
:url“http://www.eclipse.org/legal/epl-v10.html"}
:插件[[lein cljsbuild“1.1.5”]
[lein ring“0.10.0”]]
:依赖项[[org.clojure/clojure“1.8.0”]
[org.clojure/clojurescript“1.9.456”]
[环“1.4.0”]
[leiningen“2.7.1”]
[试剂“0.6.0”]
[花园“1.3.2”]
:cljsbuild{:builds{:app{:sourcepath[“src/cljs”]}
:编译器{:输出到“resources/public/main.js”
:pretty print true}}}
:环{:handler试剂测试.core/-main})
我的项目结构如下(至少对于相关文件):

core.clj
core.cljs
中,我的命名空间都是这样的:

(ns试剂测试核心)

注意:文件夹有冒号,文件没有。

在文件顶部的名称空间声明中,应使用破折号:

(ns reagent-test.core)

而文件(以及文件上方的所有目录)应使用下划线。因此,文件名应该是
whater/试剂测试/core.clj
whater/试剂测试/core.cljs

在文件顶部的命名空间声明中,应使用破折号:

(ns reagent-test.core)

而文件(以及文件上方的所有目录)应使用下划线。因此,文件名应该是
whater/试剂测试/core.clj
whater/试剂测试/core.cljs

正如克里斯·墨菲在他的回答评论中指出的那样。由于您稍微更改了项目目录结构,因此需要修改
project.clj
文件:

(defproject reagent-test "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"}
  :plugins [[lein-cljsbuild "1.1.5"]
            [lein-ring "0.10.0"]]
  :source-paths ["src/clj"]
  :dependencies [[org.clojure/clojure "1.8.0"]
                 [org.clojure/clojurescript "1.9.456"]
                 [ring "1.4.0"]
                 [leiningen "2.7.1"]
                 [reagent "0.6.0"]
                 [garden "1.3.2"]]
  :cljsbuild {:builds {:app {:source-paths ["src/cljs"]}
                            :compiler {:output-to "resources/public/main.js"
                                        :pretty-print true}}}
  :ring {:handler reagent-test.core/-main})

添加的是
:source path
键,该键应指定Clojure代码的目录。默认情况下,lein使用
src
目录作为Clojure源文件的根。

正如Chris Murphy在其答案的评论中指出的那样。由于您稍微更改了项目目录结构,因此需要修改
project.clj
文件:

(defproject reagent-test "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"}
  :plugins [[lein-cljsbuild "1.1.5"]
            [lein-ring "0.10.0"]]
  :source-paths ["src/clj"]
  :dependencies [[org.clojure/clojure "1.8.0"]
                 [org.clojure/clojurescript "1.9.456"]
                 [ring "1.4.0"]
                 [leiningen "2.7.1"]
                 [reagent "0.6.0"]
                 [garden "1.3.2"]]
  :cljsbuild {:builds {:app {:source-paths ["src/cljs"]}
                            :compiler {:output-to "resources/public/main.js"
                                        :pretty-print true}}}
  :ring {:handler reagent-test.core/-main})

添加的是
:source path
键,该键应指定Clojure代码的目录。默认情况下,lein使用
src
目录作为Clojure源文件的根目录。

这就是我在
core.clj
core.cljs
中所做的-抱歉,我应该包括这一点。我应该用
名称空间
片段编辑帖子吗?另外,请看文件结构方面的内容,
试剂测试
位使用下划线而不是破折号。另一件事是您的依赖项括号没有对齐:
[[org.clojure/clojure“1.8.0”]
-看起来最后一个括号出现得太早了。啊,捕捉得好!谢谢这是Visual Studio代码糟糕的结果,will解决了这个问题。似乎没有clj源路径,只有cljs一个。你是什么意思?我在core.cljcore.cljs中都是这么做的-抱歉,我应该包括这个。我应该用
名称空间
片段编辑帖子吗?另外,请看文件结构方面的内容,
试剂测试
位使用下划线而不是破折号。另一件事是您的依赖项括号没有对齐:
[[org.clojure/clojure“1.8.0”]
-看起来最后一个括号出现得太早了。啊,捕捉得好!谢谢这是Visual Studio代码糟糕的结果,将在问题中修复。似乎没有clj源路径,只有cljs一个,这是什么意思?