2012-07-25 10 views
11

にロードすることができますので、私はこのワークフローの問題を抱えている:がどのように新しいClojureのライブラリは、REPL

私は喜んで私のClojureプロジェクトのREPLに離れて入力し、私は私のproject.cljではない別のライブラリを必要とすることを実現しています、たとえばこの場合、私はtools.cliライブラリが必要でした。

は、私は私のエディタでproject.cljを開き、プロジェクトディレクトリ内に、私は必要なライブラリ

後に引っ張ってシェルでlein depsを入力し、その後:dependencies

 [org.clojure/tools.cli "0.2.1"] 

にエントリを追加しますプロジェクトの依存関係が取り除かれ、技術的にはすべてのクラスファイルが既に読み込み準備が整っていますが、私が自分のreplに戻ってタイプすると:

> (use 'tools.cli) 

私はこれを取得:

=>> FileNotFoundException Could not locate tools/cli__init.class 
    or tools/cli.clj on classpath: clojure.lang.RT.load (RT.java:432) 

だから、私は、ライブラリを必要とする前に私があった場所にREPLの状態を再構成時のヒープ全体を無駄に、私のREPLを再起動する必要があります。

ライブラリーを動的にロードする方法はありますか?例えば、私はlein depsを実行した後、私は戻ってREPLと型に行く:事前に

> (load-library "tools.cli") 
> (use 'tools.cli) 

おかげであなたのために、この作品のような

+2

は素晴らしいhttp://stackoverflow.com/questions/11327624/load-a-new-dependency-in-slime/ – georgek

+0

を参照してください。 。それはそれを解決した。 – zcaudate

答えて

7

ザクロはあなたのためです:

https://github.com/cemerick/pomegranate

それは例えば、実行時に新しい依存関係のダウンロードと追加をサポートしています。

(add-dependencies :coordinates '[[incanter "1.2.3"]] 
        :repositories (merge cemerick.pomegranate.aether/maven-central 
             {"clojars" "http://clojars.org/repo"})) 
0

あなたは中1つのライブラリを試してみることができますreplはlein-tryです。

~/.lein/profiles.clj

{:user {:plugins [[lein-try "0.4.3"]]}}

command line

$ lein try clj-time "0.5.1" 
Fetching dependencies... (takes a while the first time) 
lein-try loaded [clj-time "0.5.1"] 

nREPL server started on port 57036 
REPL-y 0.2.0 
Clojure 1.5.1 
    Docs: (doc function-name-here) 
      (find-doc "part-of-name-here") 
    Source: (source function-name-here) 
Javadoc: (javadoc java-object-or-class-here) 
    Exit: Control+D or (exit) or (quit) 

user=> 
関連する問題