Pergunta
Por algum motivo eu não consigo clojure REPL trabalhar com jline, o que eu fiz foi git clone do clojure repositório de fora github, em seguida, executar o ant para construí-lo, então eu baixar jline-0.9.94.jar para o diretório com clojure.jar e, em seguida, execute o seguinte comando:
java -cp jline-0.9.94.jar:clojure.jar jline.ConsoleRunner clojure.main
E obter os seguintes erros:
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)
Aqui estão os arquivos no meu diretório atual:
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$
Eu tenho o mesmo erro em clojure 1.1 e lein repl(parece lein manter a sua própria versão do clojure).
A propósito, este é o 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)
Alguém sabe o que há de errado e como corrigi-lo?Como eu realmente quero começar lein repl de trabalho para iniciar um projeto.
Solução
Eu resolvi o mesmo problema hoje pela remoção de um redundante jline*.jar
a partir de /Library/Java/Extensions
, deixando apenas um jline instalação em CLASSPATH
.
Explicação mais longa: Eu estava tentando construir labrepl, que instala todas as suas dependências, no subdirectório lib
, mas eu já tinha configurado jline copiando-o .arquivo jar /Library/Java/Extensions
. Aparentemente, java.lang.ClassLoader
não conseguia lidar com duas instalações de jline, e desde que não estavam disponíveis em dois locais, a linha de comando de partida um Clojure REPL iria conseguir encontrar o último de classes jline.ConsoleRunner
e clojure.main
, ou , dependendo da ordem em que foram dadas para o java
de comando.
Espero que isso ajude.
Outras dicas
ver o meu alternativa instruções para instalar no meu garfo:
http://github.com/jedschneider/leiningen
Enviei uma solicitação para atualizar o leia-me, mas não tive uma resposta sobre ele.uma vez que você tenha lein instalado, você pode colocar o bin/leiningen.sh em seu ~/bin e chamá-lo em qualquer lugar.eu coloquei um atalho no meu .bash_profile
alias lein="~/bin/leiningen.sh"
e, em seguida, chamar lein repl
para iniciar uma shell
também o checkout labrepl que é uma grande ferramenta de aprendizagem.
O seu java ...
comando parece bem, eu gostaria de checar se todos os frascos são de onde você acha que deveria ser (e que eles são o frascos você acha que eles são, i.é. clojure.jar
é, na verdade, o que você construídas localmente e não um super-desatualizado uma).
Se você deseja usar para Leiningen lein repl
, que é possível também.Note que não é preciso dizer que ele "mantém a sua própria versão do Clojure";Leiningen é uma ferramenta de compilação, utilizado como parte de um projeto orientado a fluxo de trabalho, e a separar Clojure frascos são específicos do projeto.Para criar um projeto de exemplo para brincar, digamos lein new foo
em algum lugar conveniente.Em seguida, você vai precisar para cd foo
, obter o seu Clojure & contrib frascos com lein deps
(o project.clj
esqueleto fornecido pelo lein new
já contém entradas para ambos) e iniciar um REPL com lein repl
.
Finalmente, você pode usar o novo cljr
projeto;ele tem uma ampla LEIAME que deve começar em nenhum momento, e com ele você será capaz de dizer cljr repl
para obter uma Clojure REPL em qualquer lugar, sem a necessidade de se criar um "projeto".
Encontrei o mesmo problema.jline.ConsoleRunner (pelo menos sobre jline-0.9.5 que eu uso) parece não ser capaz de encontrar arquivos de classe no caminho adicionado à classe caminhos de pesquisa de opção-cp de 'java' comando.Isso significa que ele não pode encontrar nem classes no diretório atual.Eu resolvi isso copiando clojure.principal em /Library/Java/Extensions/ muito.