Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 通过基于leinigen的repl加载clj文件_Clojure_Leiningen - Fatal编程技术网

Clojure 通过基于leinigen的repl加载clj文件

Clojure 通过基于leinigen的repl加载clj文件,clojure,leiningen,Clojure,Leiningen,我正在尝试从中运行snake.clj。所述文件以以下声明开头: (ns examples.snake (:import (java.awt Color Dimension) (javax.swing JPanel JFrame Timer JOptionPane) (java.awt.event ActionListener KeyListener)) (:require [examples.import-static :refer :all]))

我正在尝试从中运行
snake.clj
。所述文件以以下声明开头:

(ns examples.snake
  (:import (java.awt Color Dimension) 
       (javax.swing JPanel JFrame Timer JOptionPane)
           (java.awt.event ActionListener KeyListener))
  (:require [examples.import-static :refer :all]))
(import-static java.awt.event.KeyEvent VK_LEFT VK_RIGHT VK_UP VK_DOWN)

; actual program omitted, see above link
因为我试图在Windows上运行此功能,而(本书推荐的)在Windows上尚不可用,所以我改用。我曾经跑过:

  • lein repl
    来自包含我的
    snake.clj
    文件的
    examples
    文件夹
  • =>(加载文件“snake.clj”)
  • 但这给了我一个错误:

    CompilerException java.io.FileNotFoundException:在类路径上找不到examples/import\u static\u init.class或examples/import\u static.clj

    不知何故,我通过leinigen使用repl的设置无法让我像那样使用
    import static

    作为一种解决方法,我使用WSL Ubuntu安装Clojure CLI并在书的源代码文件夹的根目录下运行它,使用书中建议的代码直接加载snake文件(
    (要求“[examples.snake:refere:all])
    )。加载很好,我甚至可以从加载的文件中运行
    (游戏)
    ,但当然会崩溃,因为WSL Ubuntu没有GUI选项(它在出现“no X11 DISPLAY…”错误时崩溃)

    我假设我使用的基于leinigen的设置失败了,因为我必须先执行
    (加载文件“import\u static.clj”)
    。事实上,这样做是一个很好的解决方法,因为这样做之后一切都可以工作(在执行
    (使用examples.snake)
    )之后),但对于多个/递归导入,这并不能很好地扩展

    使用leinigen(在Windows上)运行此类脚本的正确方法是什么?我应该创建一个leinigen项目文件吗?还是有一个repl技巧可以做到这一点?

    这不是对你问题的直接回答,但它会帮助你站起来并开始跑步。 问题是这些文件不在类路径上,因为作者似乎决定完全忽略使用项目,所以leiningen帮不了你。/A解决方案是创建一个新项目,并将所有内容都放在其中

    如何使其工作:

    • 转到一个目录,在那里启动命令提示符,然后运行
      leinnewsnake
      。这将创建一个“snake”文件夹,其中包含项目的基本结构,并包含一个“project.clj”

    • 从下载的文件中,复制整个“src”文件夹(其中包含
      examples
      文件夹),并将其粘贴到新的“snake”文件夹中,以便覆盖生成的“src”。现在应该有一个路径“snake/src/examples/”

    • 既然“snake/src”位于类路径上,就可以按预期引用它了。转到根“snake”文件夹,启动命令提示符,然后运行

      • lein repl
      • (需要“[examples.snake:as s])
      • (s/game)

    游戏窗口应按预期弹出。

    感谢您的回复。我稍后会检查它是否适合我。(对作者公平地说,它在代码库的根目录中有一个
    .edn
    文件或类似的文件,用于
    clj
    cli工具。使用leiningen是我自己的选择(因为W10的缘故),Jeroen我实际上没有任何其他构建工具的经验;我以前从未见过
    deps.edn
    文件。也许有一种不用leiningen就能让它工作的方法,但我不能为它辩护。