2012-06-25 8 views
7

私はclojureを初めて使用しています。私はclojure replで再生したいjarファイルを持っていますが、私はleiningen 2でこれを実行しませんでした。瓶へのアクセスでclojure replを起動する方法

src/myjar.jarとsrc/orgにjarファイルを置こうとしました/mydomain/myjar.jar

私がlein replを実行すると、私はleiningenが私の人工物を見つけることができず、理解できない再現性についてのページへの参照が出てくるというエラーが出ます。ここで

は(MYJARの本当の名前で)私のproject.clj

(defproject cljliveordead "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.3.0"] 
       [org.allen.temporalintervalrelationships/time "0.2" :extension "jar"]]) 

答えて

4

lein-localrepoプラグインを使用してローカルジャーを使用できます。そして、あなたはlein localrepo listを実行して、ファイルがインストールされていることを確認し、そのレインを確認することができます

lein localrepo install <path-to-jar> org.allen.temporalintervalrelationships/time 0.2 

を使用して、ローカルリポジトリにjarファイルをインストール

:plugins [[lein-localrepo "0.4.0"]] 

あなたproject.cljに次の行を追加するプロジェクトを解決することができます依存関係はlein depsです。すべてがうまくいけば、lein replを使って瓶で遊ぶことができます。

Leiningenは、目標がrepeatable buildsであるため、ローカルジャーが嫌いです。これがサードパーティクローズドソースjarを使用した実際のプロジェクトだった場合は、ローカルのNexusリポジトリにインストールし、そのリポジトリへの参照をプロジェクトに追加するのが最善の方法です。

しかし、これはすべてあなたが達成しようとしているものは少し重いようです。あなたがしたいすべてのプレーがREPLで瓶である場合、この

(defproject clojure-time "0.1.0-SNAPSHOT" 
    :dependencies [[org.clojure/clojure "1.4.0"] 
       [com.cemerick/pomegranate "0.0.13"]]) 

のような単純なプロジェクトを作成し、クラスパスに手動

(require '[cemerick.pomegranate :as p]) 
(p/add-classpath "jsr-310-ri-0.6.3.jar") 
(javax.time.Instant/now) 

と遊びにjarファイルを追加するpomegranateライブラリを使用離れて。

1

あるハック方法は、ちょうど/proiject/path/lib/にそれを置くことで、「正しい」方法があるに:

  • プロジェクトに依存関係を追加する
  • run lein depsこれはローカルMavenリポジトリにjarをインストールするコマンドを出力します
  • コマンドを実行するアイヴズあなたがパスを指定して、ジャーに
  • 実行レインが再び
+0

依存関係の追加手順を明確にすることはできますか?私は私のproject.cljでそれをやろうとしましたが、運はありません –

+0

/project/path/lib、絶対パスはどのようなパスですか? –

+0

メインプロジェクトディレクトリの下にlibサブディレクトリを記述しようとしました。あなたのproject.cljと同じディレクトリにlibというサブディレクトリがあります –

1

をDEPS私はこれ、私のアプリケーションの多くにClojureの-CSVを使用するので、Clojureの-CSVを参照するモジュールがそれを構築することができましたことを確認してください)lein new bene-csv

1蘭

0)(後に新しいベーネ-CSVをLEIN入り)project.cljするためにこれを追加しました:私がやったことです。該当する行は[clojure-csv/clojure-csv "1.3.2"]ですが、良い例のためにproject.clj全体を表示するのが理にかなっています。

(defproject bene-csv "1.0.4-SNAPSHOT" 
    :description "A csv parsing library" 
    :dependencies [[org.clojure/clojure "1.3.0"] 
       [clojure-csv/clojure-csv "1.3.2"] 
       [util "1.0.2-SNAPSHOT"]] 


    :aot [bene-csv.core] 
    :omit-source true) 

2)は私のベーネ-CSV/SRC/bene_csv/core.clj参照Clojureは、csvファイルを確認しました。私の主なプロジェクトはベーネ-CSVの機能とDEFSを参照することができるように

(ns bene-csv.core 
    ^{:author "Charles M. Norton", 
    :doc "bene-csv is a small library to parse a .csv file. 
     Created on March 8, 2012"} 
    (:require [clojure.string :as cstr]) 
    (:require [util.core :as utl]) 
    (:use clojure-csv.core)) 

最後に、私は、これらのコマンドを実行しました。

lein deps 
lein install 
+1

助けてくれてありがとう。私はclojure libをインポートするのではなく、lein replからraw java jarを使用しようとしているので、これが私のケースにどのように当てはまるのか分かりません。 –

+0

私の答えはあなたが尋ねたことに基づいて担保権を使う方向に向かう傾向がありました。私は生のjarファイルをクラスパス上に置くことで同じ方法でインポートできると信じています。 – octopusgrabbus

関連する問題