【问题标题】:How to :use (or :require) a custom file in Clojure?如何:使用(或:需要)Clojure 中的自定义文件?
【发布时间】:2013-12-01 14:30:17
【问题描述】:

这里是超级初学者的问题。我正在关注(好)书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 Could not locate import_static__init.class or import_static.clj on classpath”。

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))

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

【问题讨论】:

    标签: clojure sublimetext sublimerepl


    【解决方案1】:

    我刚发现,想把答案分享给大家。

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

    回到编码!

    【讨论】:

    • 当你启动它时,repl 应该会将你放入用户 ns(虽然不是 user.core,我从未见过)。在需要定义它的文件后,您可以按如下方式切换到 ns (in-ns 'snake.core)
    • 不知道in-ns函数,谢谢指点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多