Domanda

Per qualche ragione non riesco a far funzionare clojure REPL con jline, quello che ho fatto è stato clonare il repository clojure su github, quindi eseguire ant per costruirlo, quindi scaricare jline-0.9.94.jar alla directory con clojure.jar, quindi eseguire il seguente comando:

java -cp jline-0.9.94.jar:clojure.jar jline.ConsoleRunner clojure.main

E ottenere i seguenti errori:

    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)

Ecco i file nella mia directory corrente:

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$ 

Ho ricevuto lo stesso errore su clojure 1.1 e lein repl(sembra che lein mantenga la propria versione di clojure).

A proposito, questo è su 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)

Qualcuno sa cosa c'è che non va e come risolverlo?Come voglio davvero far lavorare lein repl per avviare un progetto.

È stato utile?

Soluzione

Ho risolto lo stesso problema oggi rimuovendo un jline*.jar ridondante da /Library/Java/Extensions, lasciando solo un'installazione Jline in CLASSPATH.

Spiegazione più lunga: Stavo cercando di costruire labrepl , che installaTutte le sue dipendenze in Subdirectory lib, ma avevo precedentemente impostato Jline copiando il file .jar su /Library/Java/Extensions. apparentemente , java.lang.ClassLoader non è in grado di gestire due impianti di jline, e purché ce ne fossero disponibili in duePosizioni, la riga di comando che inizia un reply Clojure non avrebbe fallito la ricerca di quest'ultima delle classi jline.ConsoleRunner e clojure.main, a seconda dell'ordine in cui sono stati assegnati al comando java.

Spero che questo aiuti.

Altri suggerimenti

Vedi le mie istruzioni alternative per l'installazione sulla mia forcella:

http://github.com/jedschneider/leiningen

Ho inviato una richiesta di tiro per aggiornare il readme, ma non ha ricevuto una risposta su di esso.Una volta installato Lein, puoi mettere il cestino / leingen.sh nel tuo ~ / bin e chiamarlo ovunque.Ho messo una scorciatoia sul mio .bash_profile

alias lein="~/bin/leiningen.sh"

e quindi chiamare lein repl per avviare una shell

Anche il checkout del labrepl che è un grande strumento di apprendimento.

http://github.com/relevance/labrepl

Vostro java ... il comando sembra a posto, ricontrollerei se tutti i vasi sono dove pensi che dovrebbero essere (e che sono il vasi che pensi siano, cioè. clojure.jar è in realtà quello che hai costruito localmente e non uno super-obsoleto).

Se si desidera utilizzare Leiningen per lein repl, anche questo è possibile.Si noti che non è esatto dire che "mantiene la propria versione di Clojure";Leiningen è uno strumento di compilazione, utilizzato come parte di un flusso di lavoro orientato al progetto, e i vasi Clojure separati sono specifici del progetto.Per creare un progetto di esempio in cui giocare, ad esempio lein new foo in un posto comodo.Allora avrai bisogno di cd foo, ottenga i suoi barattoli di Clojure & contrib con lein deps (il project.clj scheletro fornito da lein new contiene già voci per entrambi) e avviare un REPL con lein repl.

Infine, è possibile utilizzare il nuovo cljr progetto;ha un README completo che dovrebbe iniziare in pochissimo tempo, e con esso sarai in grado di dire cljr repl per ottenere un REPL Clojure ovunque, senza la necessità di creare un "progetto".

Ho incontrato lo stesso problema.jline.consolerunner (almeno su Jline-0.9.5 che uso) sembra non essere in grado di trovare file di classe nel percorso aggiunto ai percorsi di ricerca della classe da -cp opzione del comando 'Java'.Significa che non riesce a trovare né classi nella tua directory corrente.Ho risolto questo copiando clojure.main sotto / biblioteca / java / estensioni / anche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top