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.

¿Fue útil?

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.

http://github.com/relevance/labrepl

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.

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