Clojure FileNotFoundException与Leiningen和Ring
我目前正在通过命令行使用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
试剂测试的项目,我遇到了一个问题:
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.clj
和core.cljs
中都是这么做的-抱歉,我应该包括这个。我应该用名称空间片段编辑帖子吗?另外,请看文件结构方面的内容,试剂测试
位使用下划线而不是破折号。另一件事是您的依赖项括号没有对齐:[[org.clojure/clojure“1.8.0”]
-看起来最后一个括号出现得太早了。啊,捕捉得好!谢谢这是Visual Studio代码糟糕的结果,将在问题中修复。似乎没有clj
源路径,只有cljs
一个,这是什么意思?