2012-04-10 10 views
1

データベース操作を行うために小さな名前空間を作成しました。別の名前空間内から使用したいと思います。通常、同じディレクトリ内のファイルを持った後、すべてのことが必要だだろう複数の名前空間を持つClojure CLR

(ns program (:require [other-ns :as other]) (:gen-class)) 

を行います。しかし、これはClojure CLRでは動作しません、コンパイラはother-nsについて知らないことについて不平を言います。では、これを行う正しい方法は何ですか?すべての名前空間に対して別々のアセンブリを使用していますか?

[EDIT]別の例

another.clj

(ns another) 

    (defn hello [name] (str "Hello " name)) 

program.clj

(ns program 
    (:require [another :as a]) 
    (:gen-class)) 

私はREPLでprogram.cljをロードし、このメッセージを得る:

FileNotFoundExceptionロードパスにanother.clj.dllまたはanother.cljが見つかりませんでした。 clojure.lang.RT.load(d:\ work \ clojure-clr \ Clojure \ Clojure \ Lib \ RT.cs:3068)

+0

http://clojure.org/libsを見て、予想される場所にすべての名前空間/ファイルがあることを確認してください。何が間違っているのか分からない場合は、(ns ..)形式、ファイルシステム内の位置、表示されているエラーを表示してください。 –

+0

プロジェクトを最初にコンパイルするときにエラーが発生しますか?それを構築して、REPLにprogram.cljをロードしてみてください。私が尋ねることができる唯一の他の事はあなたが新しいvsClojureを使用していることです? – Rob

答えて

0

同じディレクトリのfilea.cljとfileb.cljに2つのファイルを作成しました。ここfilea.cljです:ここでは

(ns filea) 

(defn hi [] 
    (println "hi from filea")) 

ですfileb.clj:

(ns fileb 
    (require [filea :as a]) 
    (:gen-class)) 

(defn -main [] 
    (println "hi from fileb") 
    (a/hi)) 

が、私はこれらのファイルが住んでいるディレクトリに変更し、走っ:

C:\ \ tempにマルチNS> clojure.compile fileb filebをコンパイルしています。 - 59ミリ秒。

そして、私はそれを実行したとき、私は見た:

C:マルチNS> C \ \ tempに:FILEB から\ツール\ Clojureの-CLR-1.3.0-デバッグ-4.0 \ fileb.exe HIをhi from filea

vsClojureを使用しているのですか、VSの外でコードを記述していますか?

+0

私はVsClojureを使用していました。 – Matthew

+0

vsClojureをインストールして、上記のようにprogram.cljファイルを保存し、上記の例のfileb.cljの代わりに使用した以外は、同じタイプの作業を行いました。私は問題はなかった。コードやプロジェクトディレクトリと名前空間のレイアウトを投稿できますか? – Rob

+0

ありがとう@ロブ、私は私の例を更新しました。 – Matthew

関連する問題