1

私が持っている.cljファイルでは(「(incanter core io ...)を使用してください)。そのコードを評価しようとすると、次のエラーが発生します: コードを次のように変更した場合: (use '(incanter))、必要な名前空間が使用できないことを除いて、すべて問題ありません。これは予想されることです。過去 18 か月間、jEdit と clojure プラグインを非常に満足して使用しており、クラスパスが問題ないことを綿密に確認しました。私は('... math.combinatoricsを使用して)試してみました.csvおよびjson jar(これらはすべて正常に機能しました)で、jEdit構成の問題ではないことを合理的に確認しました。clojure/core jar で「matrix」を探しましたが、見つかりませんでした。この問題を解決するための助けをいただければ幸いです。

さらに調査した結果、問題の原因を突き止めたと思います。clatrix-0.3.0 名前空間宣言では、clojure.core.matrix が必要です。クラスパスから clatrix を削除して評価 ('(incanter core ...) を使用) すると、次のエラーが発生します。 RT.java:443)。clatrix がクラスパスに追加されると、元のエラーが発生します (つまり、clojure.core.matrix が見つかりません)。Incanter-core には Matrix.class ファイルがあります。incanter は clojure.core に依存する clatrix に依存しているようです。存在しないマトリックス。この問題をどのように解決しますか、または回避策はありますか?

4

1 に答える 1

3

ここでの問題は、ライブラリに推移的な依存関係を提供していないことです。clojure.core.matrix は clojure.core の一部ではありません。明らかに、Clojure を実行するために Jedit が使用する方法が何であれ、依存関係を検出または解決するわけではありません。

lein replこの依存関係の解決は手動で行うことができますが、開発中に leiningen が依存関係を解決してクラス パスを設定し、そのタスクを使用して開発中にインタラクティブな repl を開始することは、エラーが発生しにくく、時間もかかりません。Lein repl は nrepl サーバーを起動します。これには、複数のエディター/プログラミング環境が接続できる明確に定義された API があります。clojure 開発用の優れたエディターは、nrepl サーバーに接続する何らかの方法を提供する必要があります。

于 2014-01-24T22:53:49.220 に答える