0

在 emacs cider repl 中,现在我知道如何在leiningen项目中使用clojure.tools.namespace 。但是,当我在不属于任何项目的单个clj 文件上使用它时,似乎clojure.tools.namespace不适用于该文件:

=> #<FileNotFoundException java.io.FileNotFoundException: Could not locate com/foo__init.class or com/foo.clj on classpath: >

我已经在.lein/profile.clj和clj 文件中声明了clojure.tools.namespace 。我应该如何让clojure.tools.namespace在单个 clj 文件上工作?require

我的个人资料.clj

{:user
 {:repl-options {:timeout 128000}
  :plugins [;; REPL
            [cider/cider-nrepl "0.9.0-SNAPSHOT"]
            [refactor-nrepl "0.2.2"]

            ;; Application server
            [lein-immutant "2.0.0-SNAPSHOT"]

            ;; Automated testing
            [lein-cloverage "1.0.2"]
            [lein-test-out "0.3.1"]

            ;; Package management
            [lein-ancient "0.6.2"]
            [lein-clojars "0.9.1"]

            ;; Documentation
            [codox "0.6.8"]
            [lein-clojuredocs "1.0.2"]

            ;; Static analysis
            [lein-typed "0.3.4"]
            ;; [jonase/eastwood "0.1.2"]
            [lein-bikeshed "0.1.6"]
            [lein-kibit "0.0.8"]]

  :jvm-opts ["-Dapple.awt.UIElement=true"]

  :dependencies [[org.clojars.gjahad/debug-repl "0.3.3"]
                 [difform "1.1.2"]

                 [spyscope "0.1.4"]
                 [org.clojure/tools.trace "0.7.8"]

                 [org.clojure/tools.namespace "0.2.9"]
                 [im.chit/vinyasa "0.2.0"]
                 [slamhound "1.5.5"]

                 [criterium "0.4.3"]]

  :injections [(require 'spyscope.core)
               (require 'alex-and-georges.debug-repl)
               (require 'com.georgejahad.difform)
               (require '[vinyasa.inject :as inj])
               (inj/inject 'clojure.core '>
                           '[[clojure.repl apropos dir doc find-doc pst source]
                             [clojure.tools.trace trace trace-forms trace-ns trace-vars
                              untrace-ns untrace-vars]
                             [clojure.test run-tests run-all-tests]
                             [clojure.pprint pprint pp]
                             [com.georgejahad.difform difform]
                             [alex-and-georges.debug-repl debug-repl]
                             [vinyasa.pull pull]])]}}
4

1 回答 1

1

虽然这不能回答您的具体问题,但它可能会提供一些关于替代工作流程的想法,这些想法可能会有所帮助。

  • lein-exec这是一个 lein 插件,可让您编写 clojure 脚本或在命令行上评估 clojure 表达式,其方式类似于使用 shell、python、ruby、perl 等可以完成的操作。当然,启动时间有点长,但是这个插件将帮助您处理单个 clj 脚本文件中的依赖关系等。(还有其他可能的解决方案可以提高启动速度)。有关一些示例,请参阅此博客文章 http://charsequence.blogspot.in/2012/04/scripting-clojure-with-leiningen-2.html

  • 一个从头开始的项目。我有一个相当通用的项目,叫做从头开始。它只允许我在项目的 src 目录中创建一个新文件,我可以将其用于实验或演示。例如,我在这个临时项目中有一个名为 stackoverflow.clj 的文件,我在计算关于堆栈溢出的 clojure 问题的答案时使用它。事实上,我在这个目录中有很多单独的 clj 文件,每个文件只代表一个简单的想法、测试、实验等。这不是一个真正的项目,即我不能lein run在项目的根目录下做 a 并期待任何东西有意义的。但是,我可以转到 emacs 中的源目录,打开一个文件,然后运行 ​​cider。

于 2015-02-18T07:05:43.843 回答