Clojure命名空间转换为_

Clojure命名空间转换为_,clojure,noir,Clojure,Noir,如Noir错误页面所示的错误:java.io.FileNotFoundException:在类路径上找不到边界/lat_long\uu init.class或边界/lat_long.clj 需要它的代码: (ns boundaries.views.boundary (:use noir.core hiccup.core hiccup.page-helpers) (:require [boundaries.lat-long :as lat-long]

如Noir错误页面所示的错误:
java.io.FileNotFoundException:在类路径上找不到边界/lat_long\uu init.class或边界/lat_long.clj

需要它的代码:

(ns boundaries.views.boundary
  (:use noir.core
        hiccup.core
        hiccup.page-helpers)
  (:require
    [boundaries.lat-long :as lat-long]
    [noir.response :as resp]))

为什么它要查找的是
lat_long
,而不是指定的
lat long
?Bounders/lat-long.clj以及相应的Bounders.lat-long命名空间都存在。

JVM不允许类名称中包含
-
s,因此Clojure编译器将它们转换为
\ucode>s

问题很可能与project.clj依赖项有关

诊断此类问题时:

  • REPL中是否提供了名称空间
  • .class文件是否显示在项目的lib目录中
  • 重新运行
    lein deps

JVM不允许类名称中包含
-
s,因此Clojure编译器将它们转换为
s

问题很可能与project.clj依赖项有关

诊断此类问题时:

  • REPL中是否提供了名称空间
  • .class文件是否显示在项目的lib目录中
  • 重新运行
    lein deps

您需要将边界/lat-long.clj重命名为边界/lat_long.clj

请注意,您不必更改名称空间名称。clojure约定对函数和命名空间名称使用“-”


Stuart Sierra的回复是:“这是Java互操作性的必要解决方法。”

您需要将bounders/lat-long.clj重命名为bounders/lat_-long.clj

请注意,您不必更改名称空间名称。clojure约定对函数和命名空间名称使用“-”


Stuart Sierra的回复是:“这是Java互操作性的一个必要解决方案。”

我明白了。在我学习的过程中,我希望遵守惯例。Clojure开发人员是否像Java中那样普遍采用camelcase?我真的不是那个询问Java约定的人,希望有人会评论。。。这是非常好的使用-在名称,我只是不喜欢。我将把它从我的帖子中删除,这对我来说太固执己见了;-)哦,不!幸运的是,我想制作其他人使用的东西,正因为如此,惯例和个人美学才是最重要的important@dAni但是如果编译器将它们转换为u,那么我该怎么办?将文件命名为uu,将ns命名为-?是。查看Clojure源代码以获得大量示例。我也很惊讶/生气:),现在我只是没有意识到。我明白了。在我学习的过程中,我希望遵守惯例。Clojure开发人员是否像Java中那样普遍采用camelcase?我真的不是那个询问Java约定的人,希望有人会评论。。。这是非常好的使用-在名称,我只是不喜欢。我将把它从我的帖子中删除,这对我来说太固执己见了;-)哦,不!幸运的是,我想制作其他人使用的东西,正因为如此,惯例和个人美学才是最重要的important@dAni但是如果编译器将它们转换为u,那么我该怎么办?将文件命名为uu,将ns命名为-?是。查看Clojure源代码以获得大量示例。我也很惊讶/生气:),现在我只是不知道。嗨,克里斯,我想这是回答:嗨,克里斯,我想这是回答: