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.

Foi útil?

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.

http://github.com/relevance/labrepl

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top