Pregunta

Aquí puedo comprobar la variable de entorno CLASSPATH
Daniel @ Daniel-laptop: ~ / ps / clojure / proyectos / ring-tutorial $ echo $ CLASSPATH
/ Home / Daniel / ps / clojure / proyectos / anillo-tutorial / src

Aquí puedo comprobar lo que piensa que es java.
Daniel @ Daniel-laptop: ~ / ps / clojure / proyectos / ring-tutorial $ Lein repl
1.1.0 clojure user => (Sistema / getProperty "java.class.path")
"Src /: clases /: / home / Daniel / .m2 / repositorio / Leiningen / Leiningen / 1.1.0 / 1.1.0-Leiningen-standalone.jar: lib / clojure-1.1.0.jar: lib / servlet-api -2.5-6.1.14.jar: lib / commons-io-1.4.jar: lib / CLJ-StackTrace-0.1.0.jar: lib / clojure-contrib-1.1.0.jar: lib / anillo-devel-0,2 .0.jar: lib / embarcadero-util-6.1.14.jar: lib / CLJ-html-0.1.0.jar: lib / anillo-embarcadero-adaptador-0.2.0.jar: lib / embarcadero-6.1.14 .jar: lib / anillo-core-0.2.0.jar: lib / commons-fileupload-1.2.1.jar: lib / anillo-servlet-0.2.0.jar: lib / commons-codec-1.4.jar:"

Como se puede ver, las dos respuestas son completamente diferentes. Estoy bastante seguro de que yo sólo debo ser malentendido, donde conviene que sea la edición de la variable CLASSPATH de Java para "hacer las cosas", excepto que todo lo que he encontrado dice que esto debería funcionar. Entonces, ¿cuál es el problema? No Leiningen engendro su propia instancia renegado extraña de clojure? ¿Estoy editando una variable completamente irrelevante? Cualquier ayuda muy apreciada.

¿Fue útil?

Solución

$CLASSPATH es de hecho completamente irrelevante aquí. Es lo usaría java-la-JVM-lanzador-programa de ruta de clases si no hay información fue proporcionada a él en la línea de comandos; Leiningen ofrece la JVM con una ruta de clase adecuada a lo que se proyecte está trabajando.

En este caso particular, "/home/.../ring-tutorial/src" no sería una ruta de clase muy útil para el tutorial Ring, ya que sólo incluye la fuente del tutorial anillo y no incluye el frasco Clojure (que es necesario para la ejecución de código Clojure), los frascos de anillos ( anillo es un proyecto de varios módulos) o cualquiera de los otros frascos anillo depende. La ruta de clase producida por Leiningen podría parecer bastante largo, pero todos sus componentes realmente necesita para estar allí.

Por cierto, si estás empezando con Clojure, que recomiendo que se adhieren a las instalaciones de gestión de su ruta de clase de las herramientas principales (que podría significar Emacs + lein swank o algún IDE + Clojure el plug-in) si es posible. De lo contrario, hay un montón de preguntas sobre temas de ruta de clases Clojure aquí en SO, además de una multitud de otros recursos sobre el tema puede google para ... pero ahora que el apoyo de la herramienta es bastante robusto y normalmente no necesidad ruta de clases para tocar con la mano, es sólo el dolor es mejor evitarlo en el principio.

Otros consejos

El problema de usar la variable CLASSPATH para administrar sus dependencias es que todos Java y otros lenguajes JVM necesitarían para manipularlo para sus fines. No se necesita mucho tiempo antes de que haya pintado a sí mismo en la esquina.

clase de obras cuando se inicia un servidor que sólo se pone en marcha un servidor. Se rompe por completo en un ordenador de un desarrollador de Java, que tiene 10 de los programas y proyectos de todas las diferentes dependencias que necesitan y luego se pasa más tiempo de depuración scripts bash para manipular la variable CLASSPATH que la escritura de código fuente.

Por tanto, esta forma de administrar la ruta de clase se ha metido en desuso, prefiriendo otras técnicas de carga de clase, o cuando se utiliza el CLASSPATH, utilizando sólo muy localmente.

La ruta de clases Clojure es la ruta de clases de Java.

$CLASSPATH se ignora cuando el ejecutable java se invoca con el argumento -cp, que Leiningen (y la mayoría de los otros scripts Clojure construcción) lo hacen.

Si estás usando una herramienta de construcción tales como Leiningen, debe utilizarlo para administrar la ruta de clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top