Получение IllegalStateException при перезагрузке пространства имен в REPL - PullRequest
14 голосов
/ 10 января 2011

Моя декларация пространства имен выглядит следующим образом:

(ns test.foo
  (:use 
    [clj-http.client :only (get) :as client]
    [net.cgrand.enlive-html :only (select) :as html]))

Она отлично работает в REPL, при первом использовании.Затем, когда я изменяю код и пытаюсь выполнить следующее в REPL:

(use :reload 'test.foo)

, я получаю:

java.lang.IllegalStateException: get already refers to: #'clj-http.client/get in namespace: test.foo (foo.clj:1)

Я нахожусь на окнах с против часовой стрелки и также пробовал с leiningenРЕПЛ).

1 Ответ

9 голосов
/ 10 января 2011

Вы не должны случайно скрывать основные фнс. Вы должны четко заявить о своих намерениях:

(ns test.foo
  (:refer-clojure :exclude [get]) ; suppress the shadowing warning
  (:require [clojure.core :as core]) ; allow to still reach clojure.core/get through core/get
  (:use 
    [clj-http.client :only (get) :as client]
    [net.cgrand.enlive-html :only (select) :as html]))
...