2011-07-21 35 views
27

我正在使用Leiningen(第一次)管理我的寫作應用程序。到目前爲止,我已經定義了項目依賴關係,在項目lib目錄中安裝了deps,並定義了一個函數。當我從項目根目錄運行lein repl,然後調用我定義的函數時,出現錯誤unable to resolve symbol。任何人都知道我做錯了什麼,以及如何通過Leiningen正確運行我的應用程序?謝謝。如何使用Leiningen運行代碼?

回答

29

來自leiningen repl,您將不得不切換到您的函數在in-ns宏中定義的命名空間。

(in-ns 'myproject.core) 

則函數應該可以
你也可以use從REPL命名空間包含在默認(用戶)的命名空間。

(use 'myproject.core) 

後,你可能要考慮尋找到lein runlein uberjarlein jar leiningen任務。因此

+0

我不知道'lein run',你能指點我到哪裏可以找到mroe信息嗎?我在我的項目命名空間中設置了':main',但我在使用帶參數的'lein run'時遇到了一些困難;我不斷地得到'線程中的異常'main「java.lang.NullPointerException(NO_SOURCE_FILE:1)' – sjac

+1

如果你執行'lein help'(甚至只是'lein'),就會顯示一個命令列表。你可以深入挖掘命令的名字;例如:'lein help run' – Scott

16

在我的項目,對於core.clj文件,其中包含一個命名空間中定義:

(ns my-project.core) 

...我設置project.clj在Leiningen的defproject地圖:main鍵:

(defproject my-project "1.0.0-SNAPSHOT" 
    :description "My project description" 
    :dependencies [[org.clojure/clojure "1.2.1"]] 
    :main my-project.core) 

所以,當我運行lein repl,我的核心命名空間是自動加載的,我看到:

mac:my-project scott$ lein repl 
REPL started; server listening on localhost:31515. 
my-project.core=> 
+1

如果我使用':main',熱碼解析是否自動發生? – sjac

+7

我不確定您是否問Leiningen是否會自動查找文件更改並將它們加載到您的實時REPL中,但它沒有這樣做。但是,不要重啓REPL,你可以執行以下命令來加載最新的代碼:'(use:reload-all'my-project.core)' – Scott