clojure/lein REPL с jline

По некоторым причинам я не могу получить clojure REPL работающий с jline, что я сделал был клон мерзавца clojure репозиторий от GitHub затем выполненный муравей для создания его, затем я загружаю 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 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 работающий запускать проект.

6
задан Michał Marczyk 10 July 2010 в 13:00
поделиться

3 ответа

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

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

Надеюсь, это поможет.

3
ответ дан 17 December 2019 в 06:59
поделиться

см. Мои альтернативные инструкции по установке на моей вилке:

http://github.com/jedschneider/leiningen

Я отправил пул-реквест для обновления readme, но не сделал этого. Я не получил на это ответа. как только вы установили lein, вы можете поместить bin / leiningen.sh в свой ~ / bin и вызывать его где угодно. Я добавляю ярлык на свой .bash_profile

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

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

, а также проверить labrepl, который является отличный инструмент для обучения.

http://github.com/relevance/labrepl

1
ответ дан 17 December 2019 в 06:59
поделиться

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

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

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

0
ответ дан 17 December 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: