По некоторым причинам я не могу получить 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 работающий запускать проект.
Я решил ту же проблему сегодня, удалив избыточную 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
.
Надеюсь, это поможет.
см. Мои альтернативные инструкции по установке на моей вилке:
http://github.com/jedschneider/leiningen
Я отправил пул-реквест для обновления readme, но не сделал этого. Я не получил на это ответа. как только вы установили lein, вы можете поместить bin / leiningen.sh в свой ~ / bin и вызывать его где угодно. Я добавляю ярлык на свой .bash_profile
alias lein = "~ / bin / leiningen.sh"
, а затем вызываю lein repl
, чтобы запустить оболочку
, а также проверить labrepl, который является отличный инструмент для обучения.
Ваша команда 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 где угодно, без необходимости создания «проекта».