2

Noir 错误页面上显示的错误:java.io.FileNotFoundException: Could not locate boundaries/lat_long__init.class or boundaries/lat_long.clj on class path

需要它的代码:

(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?边界/lat-long.clj 以及相应的边界.lat-long 命名空间存在。

4

2 回答 2

4

JVM 不允许-在类名中使用 s,因此 Clojure 编译器将它们转换为_s

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

在诊断此类问题时:

  • REPL 中是否有可用的命名空间?
  • .class 文件是否出现在项目的 lib 目录中?
  • 重新运行lein deps
于 2012-06-26T02:06:53.177 回答
0

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

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

来自 Stuart Sierra 在https://stackoverflow.com/a/4451693/151650的响应:“这是 Java 互操作性的必要解决方法。”

于 2012-06-26T02:43:37.630 回答