Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 如何在远程REPL中编译名称空间_Clojure_Nrepl - Fatal编程技术网

Clojure 如何在远程REPL中编译名称空间

Clojure 如何在远程REPL中编译名称空间,clojure,nrepl,Clojure,Nrepl,我在编译驻留在运行nREPL服务器进程的项目中的.clj文件时遇到问题: 我使用lein new xxx创建了一个新项目 在项目文件夹中,我通过leinrepl启动了一个nREPL 在另一个终端窗口中,我启动了一个客户端lein repl:connectlocalhost:12345/repl 我创建了一个简单的名称空间文件,并将其保存在项目中的适当位置: (ns remote.one) (def foo 42) 现在在客户端上,我调用了这个函数 (compile 'remote.one)

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

  • 我使用
    lein new xxx
    创建了一个新项目
  • 在项目文件夹中,我通过
    leinrepl
    启动了一个nREPL
  • 在另一个终端窗口中,我启动了一个客户端
    lein repl:connectlocalhost:12345/repl
  • 我创建了一个简单的名称空间文件,并将其保存在项目中的适当位置:

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

    (compile 'remote.one) 
    
  • 我有以下例外情况:

    CompilerException java.lang.ClassNotFoundException: remote.one, compiling:(C:\Users\xxx\AppData\Local\Temp\form-init2429492334116477513.clj:1:1)
    
    现在,我希望编译调用在服务器上执行,而不是在客户机上执行。能做到吗


    谢谢

    我刚试过,效果不错。在我第一次尝试时,我错过了一个步骤:将当前目录设置为项目的目录。我看到你的描述中也缺少了这一步,也许这就是它在你的案例中不起作用的原因

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

  • (使用Java 1.7.0 Java HotSpot(TM)64位服务器VM上的
    Leiningen 2.3.4
    Clojure 1.5.1
    )。

    远程REPL是在项目文件夹中启动的,我只是在描述中省略了该步骤。您是否从同一文件夹启动客户端?为了清楚起见,我在客户端进程中遇到了异常。@Janos刚刚更新了答案,因为我意识到我实际上使用
    :headless
    标志启动了nREPL服务器。对我来说不起作用:(它仍然在temp文件夹中查找clj文件。但是,如果我在同一目录(项目的目录)中启动客户端然后它工作正常。当然,这不是一个选项。我将使用JDK1.7进行尝试,并让您知道它是如何运行的。Juan,您确定您没有启动项目文件夹中的客户端repl吗?(我仍将尝试使用1.7 JDK)