Clojure不需要cljc文件
我需要在Clojure(花园)和ClojureScript(试剂)之间共享一个名称空间 当前项目文件夹如下所示: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
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你能在什么地方分享你的项目吗?