Frage

Aus irgendeinem Grund kann ich Clojure REPL nicht mit Jline zum Laufen bringen. Ich habe mit Git das Clojure-Repository von Github geklont und dann Ant ausgeführt, um es zu erstellen. Dann lade ich jline-0.9.94.jar in das Verzeichnis mit Clojure.jar herunter. Führen Sie dann den folgenden Befehl aus:

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

Und erhalte folgende Fehlermeldungen:

    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)

Hier sind die Dateien in meinem aktuellen Verzeichnis:

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$ 

Ich habe den gleichen Fehler bei Clojure 1.1 und Lein Repl erhalten (es scheint, dass Lein seine eigene Version von Clojure verwaltet).

Dies gilt übrigens für Mac OS 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)

Weiß jemand, was falsch ist und wie man es beheben kann?Da ich Lein Repl wirklich zum Laufen bringen möchte, um ein Projekt zu starten.

War es hilfreich?

Lösung

Ich habe heute das gleiche Problem gelöst, indem ich ein überflüssiges entfernt habe jline*.jar aus /Library/Java/Extensions, so dass nur eine Jline-Installation übrig bleibt CLASSPATH.

Längere Erklärung: Ich habe versucht zu bauen labrepl, wodurch alle seine Abhängigkeiten im Unterverzeichnis installiert werden lib, aber ich hatte jline zuvor eingerichtet, indem ich die .jar-Datei nach kopierte /Library/Java/Extensions. Scheinbar, java.lang.ClassLoader konnte nicht mit zwei Installationen von jline umgehen, und solange solche an zwei Orten verfügbar waren, würde die Befehlszeile, die eine Clojure-REPL startet, die letztere der Klassen nicht finden jline.ConsoleRunner Und clojure.main, abhängig von der Bestellung, die ihnen erteilt wurde java Befehl.

Ich hoffe das hilft.

Andere Tipps

Siehe meine alternativen Anweisungen zur Installation auf meinem Fork:

http://github.com/jedschneider/leiningen

Ich habe eine Pull-Anfrage gesendet, um die Readme-Datei zu aktualisieren, habe aber keine Antwort darauf erhalten.Sobald Sie Lein installiert haben, können Sie bin/leiningen.sh in Ihr ~/bin einfügen und es überall aufrufen.Ich habe eine Verknüpfung zu meinem .bash_profile hinzugefügt

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

und dann anrufen lein repl eine Granate starten

Schauen Sie sich auch das Labrepl an, das ein großartiges Lernwerkzeug ist.

http://github.com/relevance/labrepl

Dein java ... Der Befehl sieht gut aus. Ich würde noch einmal prüfen, ob alle Gläser dort sind, wo Sie denken, dass sie sein sollten (und dass sie auch sind). Die Gläser, von denen Sie glauben, dass sie es sind, d. h. clojure.jar ist eigentlich das, das Sie vor Ort erstellt haben, und kein superveraltetes).

Wenn Sie Leiningen nutzen möchten für lein repl, das ist auch möglich.Beachten Sie, dass es nicht korrekt ist zu sagen, dass es „eine eigene Version von Clojure verwaltet“;Leiningen ist ein Build-Tool, das als Teil eines projektorientierten Workflows verwendet wird, und die separaten Clojure-Jars sind projektspezifisch.Um beispielsweise ein Beispielprojekt zum Ausprobieren zu erstellen lein new foo an einem geeigneten Ort.Dann müssen Sie es tun cd foo, Holen Sie sich Ihre Clojure- und Contrib-Gläser mit lein deps (Die project.clj Skelett bereitgestellt von lein new enthält bereits Einträge für beide) und starten Sie einen REPL mit lein repl.

Endlich könnte man das Neue nutzen cljr Projekt;Es verfügt über eine umfassende README-Datei, mit der Sie im Handumdrehen loslegen können und mit der Sie alles sagen können cljr repl um überall eine Clojure REPL zu bekommen, ohne ein „Projekt“ erstellen zu müssen.

Ich habe das gleiche Problem getroffen.Jline.CONSOLERUNNER (zumindest über Jline-0.9.5, das ich verwende), scheint nicht in der Lage zu sein, Klassendateien im Pfad finden zu können, das auf Klassensuchpfade von -CP-Option des "Java-Befehls hinzugefügt wurde.Es bedeutet, dass es keine Klassen in Ihrem aktuellen Verzeichnis finden kann.Ich habe dies gelöst, indem ich Clojure.Main unter / Bibliothek / Java / Erweiterungen / Erweiterungen kopierte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top