java - 设置类路径和访问书籍 : Programming Clojure 中的代码

标签 java clojure

我正在学习 Programming Clojure,最近我从这本书的官方网站下载了代码。对于我可以做的其他实用程序,例如 (require 'clojure.contrib.str-utils) 并且它有效。但是如何从书中加载代码呢? (require 'examples.introduction) 抛出以下异常:

java.io.FileNotFoundException: Could not locate examples/ introduction__init.class or examples/introduction.clj on classpath:
(NO_SOURCE_FILE:0)
  [Thrown class clojure.lang.Compiler$CompilerException]

Here is the full backtrace:

Backtrace:
  0: clojure.lang.Compiler.eval(Compiler.java:4543)
  1: clojure.core$eval__3990.invoke(core.clj:1728)
  2: swank.commands.basic$eval_region__686.invoke(basic.clj:36)
  3: swank.commands.basic$listener_eval__695.invoke(basic.clj:50)
  4: clojure.lang.Var.invoke(Var.java:346)
  5: user$eval__1200.invoke(NO_SOURCE_FILE)
  6: clojure.lang.Compiler.eval(Compiler.java:4532)
  7: clojure.core$eval__3990.invoke(core.clj:1728)
  8: swank.core$eval_in_emacs_package__307.invoke(core.clj:55)
  9: swank.core$eval_for_emacs__384.invoke(core.clj:123)
 10: clojure.lang.Var.invoke(Var.java:354)
 11: clojure.lang.AFn.applyToHelper(AFn.java:179)
 12: clojure.lang.Var.applyTo(Var.java:463)
 13: clojure.core$apply__3243.doInvoke(core.clj:390)
 14: clojure.lang.RestFn.invoke(RestFn.java:428)
 15: swank.core$eval_from_control__310.invoke(core.clj:62)
 16: swank.core$eval_loop__313.invoke(core.clj:67)
 17: swank.core$spawn_repl_thread__445$fn__476$fn__478.invoke(core.clj:
173)
 18: clojure.lang.AFn.applyToHelper(AFn.java:171)
 19: clojure.lang.AFn.applyTo(AFn.java:164)
 20: clojure.core$apply__3243.doInvoke(core.clj:390)
 21: clojure.lang.RestFn.invoke(RestFn.java:428)
 22: swank.core$spawn_repl_thread__445$fn__476.doInvoke(core.clj:170)
 23: clojure.lang.RestFn.invoke(RestFn.java:402)
 24: clojure.lang.AFn.run(AFn.java:37)
 25: java.lang.Thread.run(Unknown Source)

我正在 Windows XP 上的 NetBeans 中尝试 Clojure Box 和 Enclojure。 这是一个类路径问题吗?我应该把包含书中代码的文件夹放在哪里?也请帮我解决我的可变环境设置问题。

最佳答案

本书建议您使用bin 目录中的脚本。 repl.shrepl.bat,如果您阅读它们,将告诉您需要将什么放在类路径中才能使一切正常工作。如果您在为 Clojure 设置类路径或理解路径结构如何对应于命名空间名称结构时遇到困难,那么在 SO 上有很多问题对此进行了解释;例如看我的回答here . (如何告诉 java 使用什么类路径的基础知识将取决于您如何启动它,如果需要,请在 NetBeans 文档中查找。)

简而言之,我建议您从 repl.sh/repl.bat 获取类路径,并在通过您选择的方法启动 REPL 时使用它。或者只是使用适当的脚本启动 REPL(在您的情况下是 .bat 版本。)

最后,只要相应地设置类路径,将代码放在哪里并不重要。

关于java - 设置类路径和访问书籍 : Programming Clojure 中的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1800099/

相关文章:

Clojure 规范和记录构造函数

java - HCatRecord中的错误

clojure - Clojure当宏

reactjs - : "^{:key item}"的用途

clojure - 使用 Clojure 协议(protocol)实现自定义数据结构

clojure - 为什么启动 clojure repl 时绝对类路径不起作用?

java - 如何在终端中运行 Java 类

java - Android:当您的应用在后台运行时,在通知上使用 AUTO-CANCEL

java - 如何获取我的注释的参数作为 validator ?

Java 7 小程序的安全限制