2011-01-10 6 views
14

मेरे नाम स्थान घोषणा में एक नाम स्थान को फिर से लोड IllegalStateException हो रही इस तरह दिखता है:जब आरईपीएल

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

यह आरईपीएल, पहली बार मैं इसका इस्तेमाल में ठीक काम करता है। तब, जब मैं कोड को संशोधित करने और आरईपीएल में निम्न प्रयास करें:

(use :reload 'test.foo) 

मैं:

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

मैं वामावर्त के साथ खिड़कियों पर कर रहा हूँ और यह भी leiningen साथ की कोशिश की (lein repl)।

उत्तर

9

आपको दुर्घटना से कोर एफएनएस छाया नहीं करना चाहिए। आपको अपने इरादे के बारे में स्पष्ट होना होगा:

(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])) 
+0

क्रिस्टोफ़ बहुत बहुत धन्यवाद। मुझे लगता है कि मैं अपने प्रश्न का उत्तर देने वाले क्लोजर मास्टर से बेहतर उम्मीद नहीं कर सकता; ओ) – Damien

+1

हालांकि यह उत्तर अभी भी पूरी तरह से मान्य है, मुझे एहसास हुआ कि: इसके बजाय इसकी आवश्यकता है: उपयोग भी मेरी समस्या हल करता है, जब तक कि मैं हमेशा उपसर्ग का उपयोग करता हूं इसमें निर्दिष्ट: अन्य नामस्थानों से कार्यों को कॉल करने के लिए। मैं व्यक्तिगत रूप से इस विकल्प को पसंद करता हूं। – Damien