2014-03-12 22 views
1

在編譯.clj文件駐留在我運行nREPL服務器進程的一個項目一個問題:我如何編譯命名空間中遠程REPL

  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) 

現在我期望編譯調用在服務器上而不是在客戶端上執行。它可以完成嗎?

謝謝

回答

1

我只是試過它,它爲我工作。我第一次嘗試時發生的事是我錯過了一個步驟:將當前目錄設置爲項目的目錄。我發現你的描述中也沒有提到這一步,也許這就是它不適用於你的情況的原因。

  1. 使用lein new remote創建一個新項目。
  2. 更改當前目錄cd remote
  3. lein repl :headless(我現在認識到的也與您的描述不同)從項目文件夾啓動nREPL服務器。
  4. 打開一個新的控制檯,然後在~/.中啓動nREPL客戶端lein repl :connect localhost:port/repl
  5. ~/remote/src/remote/one.clj中爲ns創建文件。
  6. 來自客戶評價(compile 'remote.one)

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

+0

遠程REPL在項目文件夾中啓動,我只從我的描述中省略了該步驟。你是否從同一個文件夾啓動客戶端?爲了說清楚,我在客戶端流程中遇到了異常情況。 – Janos

+0

@Janos剛剛更新了答案,因爲我意識到我實際上是用':headless'標誌啓動了nREPL服務器。 –

+0

對我不起作用:(它仍然會在臨時文件夾中查找clj文件,但是如果我在同一個目錄(項目的目錄)啓動客戶端,那麼它工作正常。當然,這不是 – Janos

相關問題