Clojure不需要cljc文件

Dan*_*nce 7 clojure clojurescript

我需要在我的Clojure(Garden)和我的ClojureScript(Reagent)之间共享一个命名空间.

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

src/
  clj/
    name/
      css.clj
  cljs/
    name/
      core.cljs
  cljc/
    name/
      config.cljc
Run Code Online (Sandbox Code Playgroud)

config.cljc文件具有以下命名空间:(ns name.config).

我试图从内部clj/name/css.clj用require 引用这个命名空间.

(ns name.css
  (:require [name.config :as config]))
Run Code Online (Sandbox Code Playgroud)

但是,这会导致Garden出现编译错误.

引起:java.io.FileNotFoundException:无法在类路径上找到name/config__init.class或name/config.clj.

我想它甚至都没有检查cljc文件.

我添加"src/cljc":source-paths矢量中project.clj,:garden :builds但即使重新启动构建过程后,我也得到相同的错误.

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

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

看起来我必须遗漏一些非常简单的东西,因为文件周围的文档都.cljc没有提到需要它们.

Dan*_*ton 5

检查您是否在使用Clojure 1.7或更高版本project.clj.此错误消息:

引起:java.io.FileNotFoundException:无法在类路径上找到name/config__init.class或name/config.clj.

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