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)))))

核心.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

这就是问题所在:

在启动 nrepl 之前,emacs 似乎需要知道项目的路径nrepl-jack-in。但是,如果您使用 just 启动 nreplnrepl并将其连接到在单独的终端窗口中启动的 repl 进程的端口,那么 emacs 将从它连接到的 repl 进程中知道输出路径等。

因此,为了使用nrepl-jack-in,您需要先打开一个项目文件,例如core.cljorcore_test.clj然后启动nrepl-jack-in.

github 上的 Nrepl 页面添加了以下内容: Alternative you can use C-u M-x nrepl-jack-into specify the name of a lein project,而无需访问其中的任何文件。

于 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 回答