2009-12-16 52 views
3

我已經創建的樣本命名空間:命名空間Clojure中

[demas @arch.local.net ][~/dev/projects/diary]% cat shell_space.clj 
(ns shell_space) 

(defn test_fu [] 
    (println "test-shell")) 

我如何使用test_fu從我的命名空間?

我曾嘗試:

[demas @arch.local.net ][~]% clj 
Clojure 1.1.0-alpha-SNAPSHOT 
user=> (require 'shell_space) 
java.io.FileNotFoundException: Could not locate shell_space__init.class or shell_space.clj on classpath: (NO_SOURCE_FILE:0) 
user=> (require '/home/demas/dev/projects/diary/shell_space) 
java.lang.Exception: Invalid token: /home/demas/dev/projects/diary/shell_space java.lang.Exception: Unmatched delimiter:) 

這是我的CLASSPATH:

[demas @arch.local.net ][~]% echo $CLASSPATH 
/home/demas/dev/projects/diary 
+1

它適合我。你'clj'腳本里有什麼? – 2009-12-16 12:33:38

+0

cat/usr/local/yaourt/clojure-git/clj:http://pastebin.com/m5064bea1 – demas 2009-12-16 13:45:59

回答

4

有兩個問題,我可以看到。首先,Clojure希望ns名稱使用 - 字符,其中的文件名使用_字符(你不能真正使用 - 在ns名稱中或_在文件名中);所以,您需要使用

(ns shell-space) 

位於文件頂部。其次,您的啓動腳本不使用$ CLASSPATH環境變量,而是使用$ CLOJURE_CLASSPATH。根據自己的喜好調整它,一切都應該很好。

爲了完整起見,您需要將該.clj文件放在位於文件系統層次結構中類路徑下某個目錄下的目錄中。例如。如果將〜/ dev/projects/diary放在你的類路徑中並且該文件就在那裏,那麼你應該能夠(需要'shell-space')。如果文件在〜/ dev/projects/diary/shell中,你應該能夠(需要'shell.shell-space)。

0

我謹shell_space.clj到CLOJURE_HOME,它可以幫助我。

[demas @arch.local.net ][~]% cat /etc/profile.d/clojure.sh 
export CLOJURE_HOME=/usr/share/clojure