首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不需要cljc文件

不需要cljc文件
EN

Stack Overflow用户
提问于 2016-02-07 15:30:59
回答 2查看 804关注 0票数 7

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

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

代码语言:javascript
复制
src/
  clj/
    name/
      css.clj
  cljs/
    name/
      core.cljs
  cljc/
    name/
      config.cljc

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

我尝试从clj/name/css.clj内部引用这个名称空间,并使用一个require。

代码语言:javascript
复制
(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文件的文档甚至都没有提到需要它们。

EN

回答 2

Stack Overflow用户

发布于 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文件。

票数 5
EN

Stack Overflow用户

发布于 2017-09-28 13:43:02

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

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

当我重命名模块名称空间时,它起作用了,没有对代码进行任何其他更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35255367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档