1

场景如下:我正在为一个需要 Java 解决方案的类进行项目:特别是,关键函数接收 AI 问题并返回答案字符串。我的预期方法是接收问题,然后将其发送到解决问题的 Clojure 函数,并将解决方案字符串返回给关键函数,该函数又提交它。

我的问题是工作流程之一。作为一个狂热的 emacs 用户(虽然是 Clojure 的新手),我想获得使用 Cider 的好处。但是,由于该项目的 Clojure 和 Java 部分都在开发中,因此在 Leiningen 开始一个新项目似乎并不可行或没有必要。目前我已经在 J​​ava 中构建了一个类,该类在调用时向 Clojure 处理 AI 问题,然后我从命令行(非 Cider)启动一个 REPL 并开始处理它,将进度保存在 .clj . 一旦我以这种方式解决了 AI 求解器,我计划让自己摆脱自定义问题处理程序类(在最终提交中无效),并简单地将问题从关键 Java 函数传递给主要 Clojure 函数并返回答案字符串.

我的最终提交文件必须包括:KeyFunction.java

我的最终提交文件还可以包括:myClojureFile(JAR 或其他 Java 可调用格式)

那么,就最终提交而言,当我的“项目”真的是 Java 时,我该如何在获得 Cider 的好处(它的说明总是包括 Leiningen 项目)的同时解决这个问题?

4

1 回答 1

0

您可以运行nrepl提供的服务器clojure.tools.nrepl并通过cider. 您还需要使用您的cider版本期望的任何 nrepl 中间件。由于您没有使用lein,您需要在本地配置依赖maven项或安装它及其所有依赖项(以及您的版本所期望的中间件)。cider

但到目前为止,更好的解决方案是只使用leiningen,这可以简化此设置。

一个leinengen项目可以同时包含 Clojure 和 Java 代码。如教程中所述,lein 将编译 Java 代码,然后编译 Clojure 代码。

如果您有任何 Java 要在 :java-source-paths 或 :aot 中列出的 Clojure 命名空间中编译,它们将始终在 Leiningen 通过任何 run、repl 等调用运行任何其他代码之前编译。

于 2014-09-19T15:33:10.317 回答