1

我在编译.clj驻留在运行 nREPL 服务器进程的项目中的文件时遇到问题:

  1. 我已经使用lein new xxx.
  2. 在项目文件夹中,我启动了一个 nREPL lein repl
  3. 在另一个终端窗口中,我启动了一个客户端lein repl :connect localhost:12345/repl
  4. 我创建了一个简单的命名空间文件并将其保存在项目中的适当位置:

    (ns remote.one)
    (def foo 42)
    
  5. 现在在客户端我调用了这个函数

    (compile 'remote.one) 
    

我有以下例外:

CompilerException java.lang.ClassNotFoundException: remote.one, compiling:(C:\Users\xxx\AppData\Local\Temp\form-init2429492334116477513.clj:1:1)

现在我本来希望编译调用在服务器而不是客户端上执行。可以做到吗?

谢谢

4

1 回答 1

1

我刚试过,它对我有用。我第一次尝试时发生的事情是我错过了一个步骤:将当前目录设置为项目的。我看到您的描述中也缺少此步骤,也许这就是它在您的情况下不起作用的原因。

  1. 使用lein new remote.
  2. 更改当前目录cd remote
  3. 从项目文件夹启动 nREPL 服务器lein repl :headless (我现在意识到这也与您的描述不同)
  4. 打开一个新控制台并lein repl :connect localhost:port/repl~/..
  5. 为 ns 中的 ns 创建文件~/remote/src/remote/one.clj
  6. 来自客户评价(compile 'remote.one)

(使用Leiningen 2.3.4 on Java 1.7.0 Java HotSpot(TM) 64-Bit Server VMClojure 1.5.1)。

于 2014-03-12T14:07:33.803 回答