Преобразование пространства имен Clojure - в _

Ошибка, как показано на странице ошибок 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, а также соответствующее пространство имен boundaries.lat-long.

2 ответа

Решение

JVM не позволяет -s в именах классов, поэтому компилятор Clojure преобразует их в _s

проблема, скорее всего, связана с зависимостями project.clj.

При диагностике такого рода проблемы:

  • пространство имен доступно из REPL?
  • файл.class появляется в каталоге lib для проекта?
  • повторный запуск lein deps

Вам нужно переименовать границы /lat-long.clj в boundaries/lat_long.clj.

Обратите внимание, что вам не нужно менять имя пространства имен. Соглашение clojure заключается в использовании "-" для функций и имен пространств имен.

Ответ Стюарта Сьерры на /questions/7722891/pochemu-clojure-preobrazuet-chertyi-v-imenah-v-podcherkivaniya-v-fajlovoj-sisteme/7722897#7722897: "Это необходимый обходной путь взаимодействия Java".

Другие вопросы по тегам