2011-11-23 15 views
8

Para empezar, no soy un programador de Java, por lo que sería útil que sus respuestas no se definan en términos de Java (en la medida en que tiene sentido).¿Cómo se buscan los espacios de nombres de clojure?

Tengo un proyecto de leiningen (específicamente un proyecto web que usa noir) usando lo que parece ser un patrón común de poner sus archivos fuente de clojure en src/YOUR-NAMESPACE/. Hasta ahora he tenido éxito agregando directorios y archivos, y he estado usando la ruta del archivo como base para el ns (siguiendo el patrón que veo en el código generado).

Agregué un nuevo archivo que no funcionó, y me pregunto por qué. Su ruta es PROJECT-ROOT/src/bayou/lib/api-helpers.clj y su espacio de nombre es (ns bayou.lib.api-helpers). El error específico que estoy recibiendo es:

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

Cuáles son todos los pasos uno a tomar con el fin de clojure reconocer un espacio de nombres?

+0

Después de escribir esta pregunta también me encontré con esta pregunta útil: http://stackoverflow.com/questions/2223190/what-are-common-conventions-for- using-namespaces-in-clojure – benekastah

Respuesta

12

El problema es el guión en el espacio de nombres.

Desde el alegría de Clojure

guiones/guiones bajos Si decide nombrar los espacios de nombres con guiones, a la mi-cool-lib, entonces el archivo de origen correspondiente debe ser con nombre con guiones en lugar de los guiones (my_cool_lib.clj).

Aquí está la explicación que subyace: https://stackoverflow.com/q/4451693/32174

+0

¡Gracias por la respuesta rápida! Muy útil. – benekastah

Cuestiones relacionadas