Pregunta
Por alguna razón, no puedo hacer que clojure REPL funcione con jline, lo que hice fue clonar el repositorio de clojure de github, luego ejecutar ant para compilarlo, luego descargué jline-0.9.94.jar al directorio con clojure.jar. luego ejecute el siguiente comando:
java -cp jline-0.9.94.jar:clojure.jar jline.ConsoleRunner clojure.main
Y obtiene los siguientes errores:
Exception in thread "main" java.lang.ClassNotFoundException: clojure.main
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:317)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at jline.ConsoleRunner.main(Unknown Source)
Aquí están los archivos en mi directorio actual:
vvshs-macbook-2:clojure vvsh$ ls
build.xml clojure-sources-1.2.0-master-SNAPSHOT.jar epl-v10.html src
classes clojure-sources.jar jline-0.9.94.jar test
clojure-1.2.0-master-SNAPSHOT.jar clojure.iml pom-template.xml
clojure-slim-1.2.0-master-SNAPSHOT.jar clojure.jar pom.xml
clojure-slim.jar doc readme.txt
vvshs-macbook-2:clojure vvsh$
Recibí el mismo error en clojure 1.1 y lein repl (parece que lein mantiene su propia versión de clojure).
Por cierto, esto está en mac ox 10.5.8
java version "1.5.0_24"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_24-b02-357-9M3165)
Java HotSpot(TM) Client VM (build 1.5.0_24-149, mixed mode, sharing)
¿Alguien sabe qué está mal y cómo solucionarlo?Como realmente quiero que lein repl funcione para iniciar un proyecto.
Solución
Resolví el mismo problema hoy eliminando un redundante jline*.jar
de /Library/Java/Extensions
, dejando solo una instalación de jline en CLASSPATH
.
Explicación más larga: Estaba tratando de construir labrepl, que instala todas sus dependencias en el subdirectorio lib
, pero previamente había configurado jline copiando el archivo .jar a /Library/Java/Extensions
. Aparentemente, java.lang.ClassLoader
no podía manejar dos instalaciones de jline, y mientras hubiera unas disponibles en dos lugares, la línea de comando que iniciaba un REPL de Clojure no encontraría la última de las clases jline.ConsoleRunner
y clojure.main
, dependiendo de la orden que se les dio al java
dominio.
Espero que esto ayude.
Otros consejos
Vea mis instrucciones alternativas para instalar en mi tenedor:
http://github.com/jedschneider/leiningen
Le envié una solicitud de extracción para actualizar el Readme, pero no recibí una respuesta al respecto.Una vez que haya instalado Lein, puede poner el bin / leiningen.sh en su ~ / bin y llamarlo en cualquier lugar.Puse un atajo en mi .bash_profile
alias lein="~/bin/leiningen.sh"
y luego llame a lein repl
para lanzar un shell
También pagar el LabrePL que es una gran herramienta de aprendizaje.
Su java ...
El comando se ve bien, volvería a verificar si todos los frascos están donde crees que deberían estar (y que estén el frascos que crees que son, es decir clojure.jar
es en realidad el que usted construyó localmente y no uno súper obsoleto).
Si desea utilizar Leiningen para lein repl
, eso también es posible.Tenga en cuenta que no es exacto decir que "mantiene su propia versión de Clojure";Leiningen es una herramienta de compilación que se utiliza como parte de un flujo de trabajo orientado a proyectos, y los frascos de Clojure separados son específicos del proyecto.Para crear un proyecto de muestra para jugar, digamos lein new foo
algún lugar conveniente.Entonces necesitarás cd foo
, consigue tus frascos de Clojure & contrib con lein deps
(el project.clj
esqueleto proporcionado por lein new
ya contiene entradas para ambos) e iniciar un REPL con lein repl
.
Finalmente, podrías usar el nuevo cljr
proyecto;tiene un archivo LÉAME completo que debería ayudarle a comenzar en poco tiempo y con él podrá decir cljr repl
para obtener un Clojure REPL en cualquier lugar, sin necesidad de crear un "proyecto".
Conocí el mismo problema.Jline.Consolerunner (al menos acerca de Jline-0.9.5 que uso) parece no poder encontrar archivos de clase en la ruta agregada a las rutas de búsqueda de clase de la opción -CP del comando 'java'.Significa que no puede encontrar clases en su directorio actual.Resolví esto copiando Clojure.Main bajo / Biblioteca / Java / Extensions / TOO.