问题标签 [clojure-java-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
388 浏览

macros - clojure 宏返回映射与 java 对象的问题

我对宏很陌生,所以我有一个基本问题,似乎与 Java 对象在 Clojure 代码中的表示方式有关。我有一个应该返回地图的宏:

但是,当我在地图中使用 java 对象时,事情变得很奇怪

如果我更改defmacrodefn输出如下所示:

所以我猜这种表示会让读者感到厌烦。有没有正确的方法来做到这一点?

0 投票
1 回答
155 浏览

maven - clojure maven 插件:使用 mvn clojure:test 时 clojure 测试成功,但使用 mvn install 时在测试阶段不成功

我正在使用 clojure maven 插件来构建一个项目。这些项目包含一个测试,让我们说mytest.clj,其内容如下:

如果我运行 mvn clojure:test,则构建运行成功。

但是如果我运行mvn install ,那么当达到测试阶段时,mytest.clj中声明的服务器就会启动。在那之后,什么都没有发生:clojure 测试脚本似乎被冻结并且项目的构建无法继续(没有任何错误消息):Maven 只是挂起。尽管如前所述, mvn clojure:test为同一个项目成功运行。

有人知道如何解决这个问题吗?

任何帮助将不胜感激。提前谢谢

贺拉斯

PS:我可以使用标准mvn install来编译和测试 clojure 源代码,因为我的项目的打包在pom.xml中配置为“clojure” 。其结果是 clojure maven 插件会自动将自身绑定到 maven 阶段 compile、test 和 test-compile。

0 投票
1 回答
111 浏览

clojure - Clojure 中类型提示的范围?

我正在寻找有关 Clojure 中类型提示范围的信息,例如,如果我写

是一样的吗

? 假设我写

Clojure 是否假设它more充满了BigInteger?假设我不想告诉它?我会做类似的事情吗

?

0 投票
1 回答
430 浏览

scala - Scala 对象和特征的 Clojure 互操作

我正在尝试在 Clojure 项目中使用 Scala 库,但遇到了一些问题。您将如何在 Clojure 中实现以下 Scala 代码?

CategoricalDomain并且CategoricalDimensionTensorDomain是特征。 LabeledCategoricalVariable并且BinaryFeatureVectorVariable是抽象类。 ChainModel是一类。

0 投票
2 回答
3314 浏览

xml-parsing - Clojure Leining REPL OutOfMemoryError Java 堆空间

我正在尝试解析一个相当小的(< 100MB)xml 文件:

我收到一个错误:

这是我的project.clj:

我尝试在我的 .bash_profile 中设置 LEIN_JVM_OPTS 和 JVM_OPTS 但没有成功。

当我尝试以下 project.clj 时:

我收到以下错误:

知道如何增加我的 leiningen repl 的堆大小吗?

谢谢。

0 投票
1 回答
237 浏览

clojure - To write a downloader, Clojure.java.io or Java's io api?

I am trying to write a general http/ftp file downloader in Clojure. I did a little research and found that I can either use java's api -- BufferedReader BufferedInputStream etc, or Clojure.java.io's api -- writer, reader, input-stream, output-stream.

  1. I found Clojure's api somewhat easier to use and read than java's api, but how about in terms of performance, speed, etc, will java's api be a better choice then?

  2. Is there any other reason to choose one instead of the other?

  3. As a jvm platform language, is Clojure a good choice for file downloader project, in terms of performance? While doing research, I also read some posts debating on speed & memory performance on jvm platform, and I guess now I wanna know if my language choice is a good match to my project..

0 投票
1 回答
261 浏览

interface - 混合定义接口和定义协议

我尝试实现表示算术表达式的接口。该接口将由 java 端使用,但整个逻辑都在 clojure 上。

有:

我尝试将其用作:

但我得到:

为什么 clojure 尝试为 Expression3 调用 ExtendsExpression 的 toTree?我希望对于 Expression3 它将调用 Expression 接口的 toTree 方法。

0 投票
2 回答
812 浏览

clojure - Clojure 注释和整数

我正在向 JaxRs 注释服务添加 Swagger 注释。

我有以下内容:

如果我反编译生成的类,注释如下所示:

注意在第一个注释代码= 200L

在运行时,这个值必须是一个 int,我不知道如何做到这一点

如果我尝试

我收到编译错误(使用 maven swagger 插件)

我努力了

这会产生此编译错误:

我尝试了很多其他的东西(deref 等),但找不到秘方。

我对clojure相当陌生,并且迫切需要一些帮助。

提前致谢

马丁

0 投票
1 回答
332 浏览

java - Clojure/QuantLib 互操作:类加载问题

问题陈述:

我希望从 Clojure 命名空间调用 QuantLib Java 函数,如下所示:

到目前为止,我已经完成了以下工作:

下载生成的 SWIG 接口

创建了一个新的 Leiningen 项目。

将上述接口复制到 src/main/java/org/quantlib/

添加:

到我的project.clj.

我按照Bojan Nikolic 的说明解决了一个非常相似的类加载问题,添加了一个 BKLoader 类。

当我core.clj将文件加载到 REPL 中时,出现以下错误:

Bojan Nikolic 有一个建议来处理这些类加载问题,我在尝试运行它时也实现了这些问题。根据该链接,我添加了一个新的静态类BKLoader来加载 QuantLibJNI,将其与其他 Java 类一起加载,并尝试core.clj再次加载到 REPL 中,以响亮的号角声:

此时,我从我的 ns 声明中删除了 B. Nikolic 的课程,core.clj并查看了classlojure

根据 Apage43 中的建议#clojure,此时我将以下内容放入我的core.clj

BKLoader这会导致与调用类时相同的错误。

我很感激你们中的任何人都可以带来的任何见解。谢谢!

解决方案

解决方案是将 QuantLib jar 添加到:java-source-pathsin project.clj

0 投票
1 回答
107 浏览

clojure - 将 Clojure 字符串解析为 Java 静态成员

在过去,我已经能够,例如

但对于 Java 静态成员,它似乎并没有以同样的方式工作。例如,我enum在自己的文件中有一个这样的:

在我的 Clojure 代码(使用 neo4j)中,我想:

(resolve (symbol (str "RelTypes/" (.toUpperCase (name reltype-as-keyword)))))返回零。

更新:

我从另一个reify可以使用的库中看到(即,使用在其他地方定义的枚举,而是动态创建RelationshipTypes)。

例如

但是如何通过使用 Clojure 代码之外的 java 文件中定义的枚举来做到这一点?