2010-05-26 31 views
10

Estoy tratando de configurar un proyecto de clojure simple, y no estoy seguro de cómo cargar archivos entre el proyecto. Estoy seguro de que la respuesta está en la documentación, pero no puedo encontrar una respuesta simple en ninguna parte y no estoy seguro de dónde buscarla.Archivos de carga de Clojure

En esencia, mi directorio es el siguiente:

Clojure/ 
    clojure/ 
     clojure.jar 
     other clojure files 
    clojure-contrib/ 
     clojure-contrib.jar 
     other contrib files 
    project/ 
     main.clj 
     utils.clj 

Y quiero main.clj a ser algo como esto:

(ns project.main 
    (:require project.utils)) 
(greet) 

y utils.clj a ser algo como esto:

(ns project.utils) 
(defn greet [] (println "Hello, World!")) 

Pero eso falla con:

Exception in thread "main" java.io.FileNotFoundException: Could not locate project/utils__init.class or project/utils.clj on classpath: (main.clj:1) 

Cuando intento ejecutarlo. Mi classpath incluye el directorio superior Clojure/ y ambos archivos jar. También traté de poner el directorio project/ en el classpath, sin suerte.

¿Cómo se configura un proyecto simple de clojure?

Respuesta

9

No menciona cuál es su entorno (es decir, Emacs/SLIME/Swank, vim/Vimclojure), así que supongo que está intentando invocarlo desde la línea de comandos.

Usted necesita tener su directorio Clojure/ proyecto en la ruta de clase:

java -cp path/to/clojure.jar:path/to/clojure-contrib.jar:path/to/Clojure ... 

asegúrese de comprobar que las rutas son correctas en relación con el directorio de trabajo actual. Necesita señalar la raíz de su espacio de nombre (es decir, si se ejecuta en Clojure/, la ruta es .).

De hecho, el diseño del proyecto funciona en mi máquina (TM), con la excepción de que tengo use en lugar de require (pero que debería haber conseguido un error diferente de todos modos si llegamos al punto cuando Clojure podría encontrar toda tus archivos).

+0

Gracias. Resultó que mi problema se debía a que estaba ejecutando desde 'project/', así que necesitaba agregar' ..' al classpath. Está funcionando ahora. Vim \ VimClojure, por cierto. :) – So8res

5

This answer Lo publiqué en otra pregunta con la esperanza de que pueda darle una idea de cómo los nombres de los archivos se deben relacionar con los nombres del espacio de nombres para que las cosas funcionen. Sin embargo, ya que su pregunta es "cómo configurar un simple proyecto de Clojure", el siguiente es un mejor comienzo:

  1. Ir a GitHub y agarrar Leiningen.

  2. Siga las instrucciones en el archivo README. Terminará haciendo algo como

    $ lein new my-project 
    $ cd my-project 
    # ... edit project.clj ... 
    $ lein deps 
    
  3. ¡Hack away! Deberá colocar sus archivos en los lugares correctos. Eso significará poner sus archivos de origen en el árbol de directorios rooteado en my-project/src, con su espacio de nombres principal residiendo probablemente en my-project/src/my_project/core.clj. Pero en realidad, he explicado todos los detalles en the answer linked to above, así que léelo (y deja un comentario si me perdí algo).:-)

Leiningen se hará cargo de la disposición básica del proyecto y establecer la ruta de clases para un REPL/Swank/nailgun para usted (si usted todavía no ha llegado a través de los dos últimos, pronto lo sabrá - - pero ese es un tema aparte, la parte más importante de la cual he cubierto hasta cierto punto, por ejemplo, in this SO answer), así que con suerte nunca tendrás que lidiar con las tonterías java -cp ... a mano. (La respuesta relacionada con swank a la que me he vinculado en el último comentario entre paréntesis contiene detalles sobre cómo configurar swank con el classpath correcto desde Emacs).

+0

Tal vez sea útil para el autor de las preguntas: http://alexott.net/es/clojure/ClojureLein.html - una introducción para trabajar con Leiningen –