Clojure不需要cljc文件

Clojure不需要cljc文件,clojure,clojurescript,Clojure,Clojurescript,我需要在Clojure(花园)和ClojureScript(试剂)之间共享一个名称空间 当前项目文件夹如下所示: src/ clj/ name/ css.clj cljs/ name/ core.cljs cljc/ name/ config.cljc config.cljc文件具有以下命名空间:(ns name.config) 我试图从clj/name/css.clj内部引用这个名称空间,但需要一个require (ns

我需要在Clojure(花园)和ClojureScript(试剂)之间共享一个名称空间

当前项目文件夹如下所示:

src/
  clj/
    name/
      css.clj
  cljs/
    name/
      core.cljs
  cljc/
    name/
      config.cljc
config.cljc
文件具有以下命名空间:
(ns name.config)

我试图从
clj/name/css.clj
内部引用这个名称空间,但需要一个require

(ns name.css
  (:require [name.config :as config]))
但是,这会导致Garden的编译错误

原因:java.io.FileNotFoundException:在类路径上找不到name/config\uu init.class或name/config.clj

我猜它甚至没有检查
cljc
文件

我在
project.clj
:garden:builds
中的
:sourcepath
向量中添加了
“src/cljc”
,但即使在重新启动构建过程后,我也会收到相同的错误

我在Clojure 1.7.0和1.8.0上看到了这种行为

还值得一提的是,它在ClojureScript中工作时没有问题(Figwheel处理构建)。我可以毫无问题地要求并使用新名称空间


看来我一定错过了一些非常简单的东西,因为
.cljc
文件中没有任何文档提到需要它们。

检查您在
项目中是否使用Clojure 1.7或更高版本。clj
。此错误消息:

原因:java.io.FileNotFoundException:在类路径上找不到name/config\uu init.class或name/config.clj


表示您正在使用Clojure 1.6或更低版本,因为Clojure的这些版本只知道查找
.class
.clj
文件。

在我的项目中将文件从.clj移动到.cljc时,我遇到了相同的错误。我做了
lein clean
,但没有效果。最后,我重命名了模块名称空间,并修复了它

(我的猜测是,编译后的模块存在某种缓存,它引用的是一个不再存在的模块,但是cljc没有被重新编译,因为该名称的模块仍然被缓存。)


当我重新命名模块名称空间时,它工作了,代码没有其他变化。

project.clj
“1.7.0”
上有
org.clojure/clojure
,当我启动REPL时,它确认
clojure 1.7.0
。还有什么需要在
project.clj
中设置的吗?我也使用1.8.0时会遇到同样的问题。您使用的是什么版本的Leinigen?如果有,你可以试试最近的。@DanPrince你能在什么地方分享你的项目吗?