2

私はclojureとemacsの初心者です。clojure-doc.org の clojure と emacs のチュートリアルに従っています。lein でテスト プロジェクトを作成した後、emacs で nrepl を起動し、core_test.clj を編集してコンパイルを試みました。

それから私はこれを得ました:

Loading /home/jakov/dev/PROJECTS/clojure/test1/test/test1/core_test.clj...
FileNotFoundException Could not locate test1/core__init.class or test1/core.clj on       
classpath:   clojure.lang.RT.load (RT.java:432)

私のプロジェクトは、によって leiningen 2 で作成されましたlein new test1。私はemacs24を使用しています

ここで何が問題になる可能性がありますか?

編集:これが私のプロジェクトのファイル構造です:

.
./doc
./doc/intro.md
./.gitignore
./README.md
./project.clj
./src
./src/test1
./src/test1/core.clj
./test
./test/test1
./test/test1/core_test.clj

編集:

ここに私のファイルがあります:

core_test.clj

(ns test1.core-test
  (:use clojure.test
        test1.core))

(deftest pairs-of-values
   (let [args ["--server" "localhost"
               "--port" "8080"
               "--environment" "production"]]
      (is (= {:server "localhost"
              :port "8080"
              :environment "production"}
             (parse-args args)))))

core.clj

(ns test1.core)

(defn foo
  "I don't do a whole lot."
  [x]
  (println x "Hello, World!"))

私が理解したように、これは私に別のエラーを与えるはずです。私が理解したように、解析引数について不平を言うはずです。ただし、これをcore.cljに追加すると、同じエラーが発生します。

(defn parse-args [args]
  {})
4

2 に答える 2

2

これが問題でした:

emacs は、nrepl を で開始する前に、プロジェクトのパスを知る必要があるようですnrepl-jack-in。ただし、nrepl を just で起動nreplし、別のターミナル ウィンドウで起動した repl プロセスのポートに接続すると、emacs は接続先の repl プロセスからパスなどを認識します。

したがって、 を操作するには、まずやのようにプロジェクト ファイルを開き、を開始nrepl-jack-inする必要があります。core.cljcore_test.cljnrepl-jack-in

github の Nrepl ページには次のように追加さ C-u M-x nrepl-jack-inています。

于 2013-03-20T11:19:16.073 に答える
1

参考までに、私にとって何がうまくいったかを教えてください:

$ lein new test1
Generating a project called test1 based on the 'default' template.
To see other templates (app, lein plugin, etc), try `lein help new`.
$ cd test1
$ lein repl
nREPL server started on port 4001
REPL-y 0.1.9
Clojure 1.4.0
    Exit: Control+D or (exit) or (quit)
Commands: (user/help)
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
          (user/sourcery function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
Examples from clojuredocs.org: [clojuredocs or cdoc]
          (user/clojuredocs name-here)
          (user/clojuredocs "ns-here" "name-here")
user=> 

Emacs の場合:

  • M-x nrepl<RET>
  • ファイルを開くtest/test1/core_test.clj
  • C-c C-k

*Messages*バッファには次のように書かれています。

Loading /Users/marko/dev/clj/test1/src/test1/core.clj...
#'test1.core/foo

まったく同じ手順を実行して、望ましくない結果が得られますか?

于 2013-03-20T10:47:52.540 に答える