Enclojure REPL とそこからの clojure モジュールの使用に問題があります。Load/Change REPL to file/ns は、分離された clojure ファイルでは正常に機能しますが、プロジェクトから使用しようとしている別の clojure ファイルへの参照を含むファイルでは機能しません。
正確な手順は次のとおりです。
- 新しいプロジェクトを作成します。
- clojure モジュール foobar.clj (名前空間 com.acme.foobar) を作成します。
foobar.clj で値を返す関数を定義します。
(ns com.acme.foobar (:com.acme.othermodule を使用))
(defn myfunc1 [] "a")
Netbeans IDE REPL を開く
foobar.clj のコンテキスト メニューから次を選択します。
- REPL を file/ns に変更します
- ロード
REPL から (myfunc1) 関数を呼び出します。これはうまくいきます:
com.acme.foobar=> (myfunc1) "a"
foobar から他のファイルを参照しようとすると、問題が発生します。これが私がすることです:
新しい clojure モジュール othermodule.clj を作成します
(ns com.acme.othermodule)
(defn fromothermodule [] "b")
foobar.clj からこれを呼び出してみます。
(defn myfunc2 [] (fromothermodule))
othermodule.clj のコンテキスト メニューから次を選択します。
- REPL を file/ns に変更します
- ロード
新しいモジュールがあることをREPLに認識させるには、実行できる必要があります。
- 私は今othermodule.cljを参照しているfoobar.cljに同じことをしますが、私は得る:
CompilerException java.io.FileNotFoundException: クラスパスに com/acme/othermodule__init.class または com/acme/othermodule.clj が見つかりませんでした: (NO_SOURCE_FILE:50) com.acme.foobar=>
このエラー メッセージは、"Change REPL to file/ns" と "Load" の両方から発生します。
私は何が欠けていますか?これを実現するには、他のトリックを行う必要がありますか? Run->Clean and Build the main project という絶望的な手段でさえ役に立ちません (もちろん、とにかく REPL ビジネスはかなり苦痛になります)。
NetBeans 6.7.1 と enclojure-plugin-2009-11-3.nbm を使用しています。