如何:在Clojure中使用(或:要求)自定义文件?

时间:2013-12-01 14:30:18

标签: clojure sublimetext sublimerepl

超级初学者问题。我跟随(好)书 Programming Clojure ,第5章是关于编写一个小型Snake游戏。提供了实用程序代码,我决定通过启动一个新的 Leiningen 项目(lein new app snake)来遵循它。在我的src/snake/core.clj我希望:use由作者撰写的名为import_static.clj的文件。我将文件复制到src/snake,然后在src/snake/core.clj我从样本中复制了导入行(:use snake.import-static)。但是当我在REPL中评估整个文件时,我有这个错误:" FileNotFoundException无法在类路径"上找到import_static__init.class或import_static.clj。

project.clj文件和编辑器的REPL(SublimeText +插件SublimeREPL)中使用Clojure 1.5.1。目录结构:

src/
  snake/
    core.clj
    import_static.clj

core.clj的顶部:

(ns snake.core
    (:import (java.awt Color Dimension)
       (javax.swing JPanel JFrame Timer JOptionPane)
           (java.awt.event ActionListener KeyListener))
  (:gen-class)
  (:use snake.import-static))

import_static.clj的顶部:

(ns ^{:author "Stuart Sierra",
      :doc "Import static Java methods/fields into Clojure"}
  snake.import-static
  (:use clojure.set))

我尝试从snake调用和命名空间声明中删除:use,但没有运气。你能帮助我吗 ?请注意,我不了解JVM,它可能是类路径或我的编辑器。

1 个答案:

答案 0 :(得分:0)

我刚刚发现,并且认为我会与大家分享答案。

它与代码无关,但是我的编辑器的REPL。 Lein的REPL没问题,因为我可以运行lein runlein repl并看到提示符被设置为命名空间snake.core=>,而在SublimeText的SublimeREPL的REPL中它被设置为user.core=>。我只需关闭它,打开project.clj文件,然后从这里打开一个带有SublimeREPL的Clojure REPL。它现在已正确设置为snake.core=>,不会再出现错误。

回到编码!