10

2日目にclojureを試していますが、まだほとんど何も理解していません。私は Programming Clojure 2nd ed を使用しています。そして私はライブラリにこだわっています。

私は Leiningen を持っていて、REPL を実行しています。本は最初に読者に単純な実行を指示します

(require 'clojure.java.io)

これは問題なく動作します(nilが得られます)。次に、別の単純なコマンドを実行して、introduction.clj というファイルをロードします。

(require 'examples.introduction)

エラーメッセージが表示される場所

FileNotFoundException Could not locate clojure/java/introduction__init.class
or clojure/java/introduction.clj on classpath:   clojure.lang.RT.load (RT.java:432)

Introduction.clj ファイルをダウンロードして、どこに配置すればよいかを調べました。エラーと本には、コマンドがクラスパスを検索すると書かれていますが、それがどこにあるのか、何なのかわかりません(1時間検索して読んだ後でも、わかりません、申し訳ありません)。いくつかのコマンドを実行したところ、多くのクラスパスがリストされていました (いずれにも clojure/java/io.clj が含まれていません)。

だから私は別のアプローチを試みました - 私のディスク上のio.cljファイルを見つけて、そこにファイルをコピーしてコマンドで実行してください

(require 'clojure.java.introduction)

これもうまくいかないようです。ちなみに、見つけたio.cljファイルは「C:\Program Files\clojure\src\clj\clojure\java」にありました。javadoc.cljやinspector.cljなど、javaフォルダーとclojureフォルダーから他のいくつかの.cljファイルを実行しようとしましたが、上記のコマンドですべて正常に動作するようです。新しいファイルだけがこの方法で読み込まれないようです。

どんな助けでも感謝します:)

4

2 に答える 2

6

Clojure は Java 仮想マシン上で実行されるため、PATH および CLASSPATH の概念について少し学ぶ必要があります。

参照: http://docs.oracle.com/javase/tutorial/essential/environment/paths.html

エラー メッセージに関しては、Clojure ランタイムはintroduction.cljディレクトリ内で検出されることを期待していますclojure\java\example\introduction.clj(本来あるべき場所ではありません。以下を参照してください)。

Clojure 名前空間の規則では、最後のコンポーネントはファイル名であり、前のコンポーネントはすべて親ディレクトリです。そう

clojure.java.introduction

ディレクトリにある必要があります(ソースの「ルート」またはクラスパスに相対的)

clojure\java\introduction.clj

(lein REPL は自動的にソースルートをクラスパスに追加します)。

理解する必要があるもう 1 つの概念は、ソース コードの「ルート」がどこにあるかです。Leiningen (使用しているビルド ツール) の場合、デフォルトは "src" または "src/main/clojure"です (GitHub の Leiningen サンプル プロジェクト ファイルに記載されています)。

最後に、本当に行き詰まった場合は、この本の完全なプロジェクトがGitHub で入手できるようです

プロジェクトを見ると、実際にファイルを配置する必要があることがわかりますsrc\examples\introduction.clj

于 2012-09-21T14:23:25.650 に答える
1

「プログラミング Clojure」という本を読んでいますか?

私は同じ問題に遭遇しました。次のような行為を禁止します。

  1. clojureをJavaで起動する場合: 私はwindowsで作業しており、clojure.jarはD:\backup\clojure-1.5.1に置き、本「プログラミングClojure」のソースコードはD:\study\clojureに置きます。 \shcloj-code\code. まず、フォルダ D:\study\clojure\shcloj-code\code にある user.clj ファイルを削除する必要があります。

java -cp d:\backup\clojure-1.5.1\clojure-1.5.1.jar;d:\study\clojure\shcloj-code\code clojure.main -r

Linux で作業している場合は、「;」を置き換えます。と ":"

  1. lein で clojure を起動する場合、最初に cd で D:\study\clojure\shcloj-code\code フォルダーに移動し、次に

lein repl

D:\study\clojure\shcloj-code\code フォルダーにある user.clj ファイルも削除する必要があります。

于 2014-02-04T14:10:32.587 に答える