【问题标题】:Clojure compilationClojure 编译
【发布时间】:2013-01-03 22:13:47
【问题描述】:

我有一个clojure编译问题:当我在windows和终端(在主目录中)的cmd.exe(在clojure的主文件夹中执行)中使用“(编译app.clj)”函数时, clojure 从 ubuntu 软件中心安装)在 linux-clojure 抛出 classnotfoundexception 并且在准备好所需设置时找不到源。请有人帮我设置编译。谢谢!

【问题讨论】:

  • 到目前为止,您最好的计划是在编译和运行 Clojure 时使用 Leiningen。如果它不适合您,请针对该问题提出单独的问题。

标签: clojure compilation


【解决方案1】:

首先,您没有正确使用编译功能。 Documentation 明确指出参数必须是命名空间符号。我不知道 app.clj 的命名空间,但它应该看起来像 my-project.app。因此正确的调用应该是这样的:

(compile 'my-project.app)

可能还有其他问题(例如未定义正确的类路径),但可以使用Leiningen 轻松解决。如果您还没有使用它,那么您绝对应该使用它。

【讨论】:

  • 您好!谢谢,但我试过这个,但这不是我的问题的解决方案。我已经阅读了文档,但这不起作用。当我使用它时的结果:“FileNotFoundException 找不到 myp/app/clj__init.class 或 myp/app/clj.clj”,当我将文件夹树设置为“myp/app/clj.clj”时,clojure 打印:“ FileNotFoundException 找不到 app.clj..."。
  • 当我将文件夹树设置为“myp/app/clj.clj”时,clojure 打印:“FileNotFoundException 无法找到 app.clj...”。当我想使用 leiningen 时,打印“Leiningen 缺少它的依赖项。请参阅自述文件中的“构建”。”解决方案没有什么有趣的地方。到目前为止,我还没有担心使用我尝试过的多种语言进行编译。
  • @user1995302,对我来说似乎是一个类路径问题。
  • 就像我之前写的那样,Leiningen 大部分时间都在为您管理。如果您使用 Ubuntu(或任何其他基于 Debian 的 Linux)尝试使用 apt-get 安装它(sudo apt-get install leiningen in terminal)。之后,只需使用 lein new project_name 创建新项目并将源文件放在 src/project_name/ 中。只需确保命名空间对应于路径。这可能有点棘手。
  • 顺便说一句。在 Clojure 中开发应用程序并不需要编译。如果您想生成独立应用程序,只需使用 lein uberjar 将项目打包到 jar 中,然后将其用作任何其他 Java jar 应用程序。
猜你喜欢
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 2013-10-13
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多