2011-11-23 6 views
8

Per iniziare non sono un programmatore Java, quindi sarebbe utile se le risposte non sono definite in termini di Java (in quanto ha senso).Come vengono cercati gli spazi dei nomi del clojure?

Ho un progetto leiningen (in particolare un progetto Web che utilizza noir) utilizzando quello che sembra essere uno schema comune per inserire i file sorgente del clojure in src/YOUR-NAMESPACE/. Finora ho avuto successo aggiungendo directory e file, e ho utilizzato il percorso del file come base per lo ns (seguendo lo schema che vedo nel codice generato).

Ho aggiunto un nuovo file che non ha funzionato e mi chiedo perché. Il suo percorso è PROJECT-ROOT/src/bayou/lib/api-helpers.clj e il suo spazio dei nomi è (ns bayou.lib.api-helpers). L'errore specifico sto ottenendo è:

java.io.FileNotFoundException: Could not locate bayou/lib/api_helpers__init.class or bayou/lib/api_helpers.clj on classpath

Quali sono tutti i passi uno da tenere in ordine per clojure di riconoscere uno spazio dei nomi?

+0

Dopo che ho scritto questa domanda ho trovato anche questa domanda utile: http://stackoverflow.com/questions/2223190/what-are-common-conventions-for- using-namespaces-in-clojure – benekastah

risposta

12

Il problema è il trattino nel namespace.

Dal gioia di Clojure

trattini/EVIDENZIA Se si decide di assegnare un nome alle spazi dei nomi con trattini, à la mia-cool-lib, allora il file di origine corrispondente deve essere nome di sottolineatura al posto dei trattini (my_cool_lib.clj).

Ecco la spiegazione di fondo: https://stackoverflow.com/q/4451693/32174

+0

Grazie per la rapida risposta! Molto utile. – benekastah