Вопрос

По какой-то причине я не могу заставить clojure REPL работать с jline, что я сделал, так это git клонировал репозиторий clojure с github, затем запустил ant для его сборки, затем я загружаю jline-0.9.94.jar в каталог с помощью clojure.jar, затем запускаю следующую команду:

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

И получаю следующие ошибки:

    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)

Вот файлы в моем текущем каталоге:

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$ 

Я получил ту же ошибку в clojure 1.1 и lein repl (похоже, lein поддерживает свою собственную версию clojure).

Кстати, это есть на 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)

Кто-нибудь знает, что не так и как это исправить?Поскольку я действительно хочу заставить lein repl работать, чтобы начать проект.

Это было полезно?

Решение

Сегодня я решил ту же проблему, удалив избыточный jline*.jar от /Library/Java/Extensions, оставляя только одну установку jline в CLASSPATH.

Более подробное объяснение: Я пытался построить лабрепл, который устанавливает все свои зависимости в подкаталог lib, но я ранее настроил jline , скопировав файл .jar в /Library/Java/Extensions. Вероятно, java.lang.ClassLoader не удалось обработать две установки jline, и до тех пор, пока они были доступны в двух местах, командная строка, запускающая Clojure REPL, не смогла бы найти последний из классов jline.ConsoleRunner и clojure.main, в зависимости от приказа , который они получили в java команда.

Я надеюсь, что это поможет.

Другие советы

См. Мои альтернативные инструкции для установки на мою вилку:

http://github.com/jedschneide/leinken

Я отправил запрос на то, чтобы обновить readme, но не получил ответ на это.Как только у вас установлен ЛЕИН, вы можете поставить BIN / LEINGEN.SH в своем ~ / bin и позвоните ему где угодно.Я положил ярлык на мой .bash_profile

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

, а затем вызовите lein repl, чтобы запустить оболочку

Также оформить заказ LabRepl, который является отличным инструментом обучения.

http://github.com/relevance/labrepl

Твой java ... Команда выглядит нормально, я бы дважды проверил, все ли банки находятся там, где, по вашему мнению, они должны быть (и что они тот банки, которые вы думаете, что они есть, т.е. clojure.jar на самом деле это тот, который вы создали локально, а не какой-то супер-устаревший).

Если вы хотите использовать Лейнинген для lein repl, это тоже возможно.Обратите внимание: неверно говорить, что он «поддерживает собственную версию Clojure»;Leiningen — это инструмент сборки, используемый как часть проектно-ориентированного рабочего процесса, а отдельные jar-файлы Clojure предназначены для конкретного проекта.Чтобы создать образец проекта для экспериментов, скажем, lein new foo где-нибудь удобно.Тогда вам нужно будет cd foo, получите Clojure и банки вкладов с помощью lein deps ( project.clj скелет предоставлен lein new уже содержит записи для обоих) и запустите REPL с помощью lein repl.

Наконец, вы можете использовать новый cljr проект;у него есть подробный README, с помощью которого вы сможете начать работу в кратчайшие сроки, и с его помощью вы сможете сказать cljr repl получить Clojure REPL где угодно, без необходимости создавать «проект».

Я встретил ту же проблему.jline.consolerunner (по крайней мере, о jline-0.9.5, которую я использую), кажется, не сможет найти файлы классов на пути, добавленной к путям поиска класса из опции «Java».Это означает, что он не может найти ни классов в вашем текущем каталоге.Я решил это, скопировав CLOJURE.MAIN под / библиотеку / Java / расширения / тоже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top