2009-07-22 13 views

Respuesta

24

Tiene algunas opciones.

Si solo se trata de un archivo (no en un paquete), en sus archivos, simplemente puede usar load. Si el archivo fue nombrado “fun.clj”, usted sólo tiene que utilizar el nombre del archivo sin la extensión:

(load "fun") 

(proporcionado fun.clj estaba en la ruta de clase). O

(load "files/fun") 

si no estaba en la ruta de clases, sino en el directorio files.

O usted podría utilizar load-file y pasarlo la ubicación de su archivo:

(load-file "./files/fun.clj") 

Si quería namespace ellos (los puso en un paquete), a continuación, que había puesto la macro ns al principio de su archivo, vuélvalo a poner en su classpath. Entonces puede cargarlo a través de use o require.

Éstos son los documentos para las funciones que he descrito:

+0

Lo siento pero todavía tengo algún problema. Tengo un archivo llamado stopwords.clj y Autotag.clj. Quiero importar palabras vacías en Autotag. Cuando puse (cargue "stopwords"), dice "Could not locate stopwords__init.class or stopwords.clj on classpath:" aunque tengo palabras vacías y Autotag en la misma carpeta. Lo siento pero soy un novato completo. Por favor, ayúdame. – unj2

+0

El directorio actual probablemente no se encuentre en su classpath, por lo que clojure no puede "verlo". Coloque stopwords.clj en algún lugar de su classpath (o cambie su classpath para incluir "."). – seth

+0

Lo siento, no sé. emacs usuario aquí. – seth

1

Éste resolvió mi problema y he revisado innumerables otros temas aquí, así que me gustaría aclararlo.

La forma más fácil de emacs (en Linux) es hacer algo como esto:

java -cp "lib/*":. clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))" 

(tenga en cuenta el "lib/*" :. dado a -cp

continuación, puede utilizar Mx slime-connect para conectarse con esta instancia.

No sé si es necesario, pero he leído que es una buena idea usar la misma versión de clojure, clojure-contrib y swank-clojure en ambos lados.

También puede configurar la ruta dentro de emacs con solo "." Para swank-clojure-classpath.

2

Además de "cargar" archivos fuente, también puede usar la función leiningen "checkout dependencies". Si tiene dos proyectos de Leiningen, por ejemplo, el proyecto A requiere B (proveedor). En el directorio raíz del proyecto A, cree un directorio llamado "checkouts". Dentro de "/ checkouts" hacer un enlace simbólico al directorio raíz del proyecto B.

- project A 
    - project.clj 
    - checkouts 
    - symlink to project B 
    - src 
    - test 

en project.clj proyecto de A, B declaran proyecto como una dependencia en el: dependencias sección como si se tratara de un proyecto en clojars.org. P.ej.

(defproject project-a 
:dependencies [[org.clojure/clojure "1.5.1"] 
       [project-b "0.1.0"]]) 

La cosa es sin embargo, usted tiene que entrar en el proyecto B y tipo:

lein install 

que recopilará los archivos de proyecto de B en un archivo JAR, que aparecerá en el directorio ~/.m2 , que es algo así como tu caché clojars.org local.

Una vez configurado todo esto, en su archivo * (s) .clj src del proyecto A, puede "exigir" archivos de proyecto B en la forma normal, como si se tratara de clojars.org:

(ns project-a.core 
    (:require [project-b.core :as pb]) 

de esta manera, puede hacer referencia a las funciones de su proyecto-b.core la forma habitual de esta manera:

pb/myfunction1 

en mi opinión, esta es una buena manera de compartir datos entre bibliotecas y proyectos Leiningen al tratar de mantener cada proyecto de Leiningen como independiente, autónomo y mínimo como sea posible.

Cuestiones relacionadas