我需要在我的Clojure (花园)和我的ClojureScript (Reagent)之间共享一个名称空间。
当前,项目文件夹如下所示:
src/
clj/
name/
css.clj
cljs/
name/
core.cljs
cljc/
name/
config.cljcconfig.cljc文件具有以下名称空间:(ns name.config)。
我尝试从clj/name/css.clj内部引用这个名称空间,并使用一个require。
(ns name.css
(:require [name.config :as config]))但是,这会导致来自Garden的编译错误。
导致: java.io.FileNotFoundException:无法找到类路径上的name/config_init.class或name/config.clj。
我想它甚至没有检查cljc文件。
我将"src/cljc"添加到project.clj和:garden :builds中的:source-paths向量中,但即使在重新启动构建过程之后也会出现相同的错误。
我在Clojure 1.7.0和1.8.0上看到了这种行为。
同样值得一提的是,它在ClojureScript中工作时没有问题(使用Fig轮处理构建)。我可以在没有问题的情况下要求和使用新的命名空间。
似乎我错过了一些非常简单的东西,因为关于.cljc文件的文档甚至都没有提到需要它们。
发布于 2016-02-07 18:05:15
检查您是否在project.clj中使用Cloory1.7或更高版本。此错误消息:
导致: java.io.FileNotFoundException:无法找到类路径上的name/config_init.class或name/config.clj。
指示您使用的是Clojure 1.6或更低版本,因为这些版本只知道查找.class或.clj文件。
发布于 2017-09-28 13:43:02
在我的项目中,当我将文件从.clj移动到.cljc时,也出现了同样的错误。我做了lein clean,但没有效果。最后,我重新命名了模块命名空间并修复了它。
(我的猜测是,存在某种已编译模块的缓存,它引用的是一个不再存在的模块,但cljc没有重新编译,因为具有该名称的模块仍然被缓存。)
当我重命名模块名称空间时,它起作用了,没有对代码进行任何其他更改。
https://stackoverflow.com/questions/35255367
复制相似问题