场景如下:我正在开发一个需要 Java 解决方案的类的项目:特别是,关键函数接收人工智能问题并返回答案字符串。我的预期方法是接收问题,然后将其发送到 Clojure 函数,该函数解决该问题并将解决方案字符串返回给关键函数,然后由关键函数提交它。
我的问题是工作流程之一。作为一名狂热的 emacs 用户(尽管是 Clojure 的新手),我希望获得使用 Cider 的好处。然而,由于该项目的 Clojure 和 Java 部分都在开发中,因此在莱宁根启动一个新项目似乎不可行或没有必要。目前,我已经在 Java 中内置了一个类,该类在调用时向 Clojure 处理 AI 问题,然后从命令行(非 Cider)启动 REPL 并开始处理它,将进度保存在 .clj 中。一旦我以这种方式解决了 AI 求解器,我计划放弃自定义问题处理类(在最终提交中无效),只需将问题从关键 Java 函数传递到主要 Clojure 函数并返回答案字符串.
我的最终提交文件必须包括:KeyFunction.java
我的最终提交文件还可以包括:myClojureFile(JAR 或其他 Java 可调用格式)
那么,就最终提交而言,当我的“项目”实际上是用 Java 语言编写时,我该如何解决这个问题,同时获得 Cider(它的说明始终包含 Leiningen 项目)的好处呢?
最佳答案
您可以运行nrepl
服务器由 clojure.tools.nrepl
提供并通过 cider
连接到此。您还需要使用您的 cider
中的任何 nrepl 中间件版本预计。由于您没有使用 lein
您需要通过 maven
配置依赖项或在本地安装它及其所有依赖项(以及 cider
版本所需的中间件)。
但到目前为止,更好的解决方案是使用 leiningen
,这简化了此设置。
一个leinengen
项目可以包含 Clojure 和 Java 代码。正如 tutorial 中提到的,lein 将编译 Java 代码,然后编译 Clojure 代码。
If you have any Java to be compiled in :java-source-paths or Clojure namespaces listed in :aot, they will always be compiled before Leiningen runs any other code, via any run, repl, etc. invocations.
关于java - Java+Clojure同时开发: Cider without Leiningen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25930222/