2024 Clojure 状态调查!中分享您的想法。

欢迎!请查阅关于页面,了解有关如何操作的更多信息。

0
错误

我正在尝试使用一个调用 requiring-resolve(任何尝试都会抛出 IllegalStateException)的库。在尝试找出问题时,我发现当我调用

System.out.println(Clojure.var("clojure.core/deref").invoke(Clojure.var("clojure.core/*clojure-version*")));

Unbound: #'clojure.core/*clojure-version*

有没有什么办法可以解决这个问题?

1 答案

+1

听起来 Clojure 本身尚未在任何通过您的 Java 代码到达上述位置的路径上初始化。这也解释了尝试使用 requiring-resolve 时的 IllegalStateException -- 并且您将看到您尝试引用任何内容的错误。

不知道更多关于您如何构建自己的 Java 程序,很难说出什么可能导致这种情况。

查看这个小型仓库可能会帮助您: https://github.com/stuarthalloway/clojure-from-java

有没有一种方法可以确保Clojure会在路径上初始化?我使用Clojure Java API,并且我的软件包通过maven进行管理。

编辑
你能在你的系统上使Stu的示例仓库工作吗?如果你可以,你能找出你的设置和那个示例可能有什么不同吗?

否则,你可能需要提供更多关于你的代码/构建过程等详细信息。

注意:我必须将以下属性添加到Stu仓库中的pom.xml文件,以便编译一切(因为默认情况下似乎是Java 1.6)

  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
...