问题标签 [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 投票
1 回答
143 浏览

java - ClassCastException MyType cannot be cast to MyType?

I have encountered a problem when using deftype in Clojure. If I run the following code:

Then the compiler throws: ClassCastException MyProject.core.TestType cannot be cast to MyProject.core.TestType. Am I doing something wrong, or is this a bug? Note that if I remove the type annotation from test-function, so it's just:

Then the code works fine, but I get a warning (with warn-on-reflect enabled) about reflection, and it runs slower, which defeats the purpose of using deftype in my current use-case.

Edit: Okay, the code works in the repl, but not when I load it using ctrl-alt-s (I'm running it in Eclipse via Counterclockwise). So the problem seems to be with Eclipse or Counterclockwise.

0 投票
1 回答
157 浏览

clojure - Clojuratica 设置

我正在尝试设置 Clojuratica(MMa v 9 免费试用版)(在运行 Mavericks 的 Mac 上)

我遵循“Clojure 数据分析食谱”中的说明,但也遵循了说明:

我收到错误消息:

0 投票
0 回答
467 浏览

clojure - clojure.lang.Reflector.invokeInstanceMethod 中的 NPE 仅在某些情况下

我在使用 Java 互操作时遇到了一个奇怪的问题。我围绕 BDB JE API 编写了一个小型专用包装器。当我在 repl (cider-repl) 中时,一切正常:我可以打开数据库、添加条目等。但是如果我从我的应用程序中的另一个函数调用 add-record 函数,我会得到一个 NPE,

我开始觉得我疯了。这将打开数据库:

这里是add-record

这里真的没有什么特别的。这产生 NPE 的用法类似于

prn在 bb/add-record 中添加了 S 并且所有值都是 non- nil,但我仍然得到 NPE。

这里正在发生一些微妙的事情,它正在躲避我。有人有想法吗?

提前致谢。

编辑:这是完整的堆栈跟踪:

正如我所说,这对我来说毫无意义,但完全可以重现。

0 投票
2 回答
1597 浏览

clojure - 如何使用 clj-http api 在 clojure 中创建多部分请求

我想使用clj-http. 多部分请求如下:

我正在使用这个 Clojure 代码来构建多部分请求:

如何添加Content-Id多部分?

0 投票
1 回答
140 浏览

java - 为什么 Clojure 现在从 JNLP 失败了?

我有一个已经使用了一段时间的 Java 应用程序,它使用嵌入式 Clojure 脚本进行一些计算。它的旧版本在当前的 JRE 中仍然可以正常运行,但是如果我构建一个新版本(只有对代码的更改是在不相关的 Java 代码中)它无法正常启动。它在本地也运行得很好。只有 JNLP 受到影响。

它失败的行是这样的:

我们目前正在为此应用程序使用自签名证书(上周我一直在与 Comodo 合作,试图获得一个受信任的证书,看看是否有帮助,但我仍然没有收到它,我需要这个应用程序尽快工作)。对我来说奇怪的是旧版本(也以完全相同的方式自签名)工作。我只是无法构建新版本。我已经回滚了我的配置,因此只有实际的 java 代码更改应该有所不同,但仍然没有运气。我在某处遗漏了一些东西......

0 投票
1 回答
276 浏览

clojure - Clojure - 从另一个命名空间访问 gen-class 的语法问题

似乎 lein 在如何重新编译代码方面是不可预测的。我在一个目录中有一个 gen-class 文件,试图在另一个目录中访问它。例如,给定这个 gen-class:

并尝试从另一个命名空间访问它,减少为尝试 1、2、3 的随机变化:

似乎没有语法可以识别“Target”而不是“a.Target”,所以我在处理 gen-class 的方式上显然有些不正确。这是一个问题,因为我正在尝试使用带注释的提供程序方法访问我们的 guice-injector,并且注释语法似乎不接受完整或简单的类规范:

或简化的:

0 投票
2 回答
291 浏览

clojure - java互操作的Clojure优化

在使用现有的 java 类时,如果我做错了什么,我经常会收到反射警告,例如

IllegalArgumentException 未找到匹配字段:获取类 java.lang.String clojure.lang.Reflector.getInstanceField (Reflector.java:271)

clojure 是否在运行时为给定方法的每次调用进行反射?还是以任何方式缓存?将任何涉及的 java-interop 移动到相关的 java 类中会有速度优势吗?

0 投票
2 回答
331 浏览

clojure - Clojure 新手 - 将 Java 代码重写为 Clojure

我有一些简单的工作 java 代码,它使用 SMACK xmmp 库来响应传入的消息并接受多用户聊天邀请。我正在尝试转换这个clojure。机器人登录但不响应消息。

0 投票
0 回答
200 浏览

serialization - Clojure:如何在编译时创建 Java 对象,而不是在加载时或运行时

我正在使用带有 Clojure 的 java 库。java 库只需要在编译时创建一个对象。通过 uberjar(使用 leiningen 创建)部署应用程序时,无法正确创建此配置对象而不会出现错误。

我可以通过宏在仅编译时创建对象。问题是它不可序列化。当应用程序通过 uberjar 运行时,如何使 jvm 可以使用此对象?将对象放入原子中不起作用,因为原子在加载时/运行时为运行 jar 的新 jvm 实例重置。编译时 jvm 需要一种方法将此对象放入其中一个 aot 编译类中。(gen-class) 似乎不起作用,因为它只能在运行时通过初始化程序初始化状态。

0 投票
2 回答
117 浏览

clojure - 为 Neo4j Embedded 在 Clojure 中将 DynamicLabel 转换为标签

我正在尝试重写位于clojure 中的neo4j示例代码。但是当我尝试创建节点时,出现以下错误

这是我的代码:

我在所有地方都尝试过各种类型的提示,但我仍然遇到同样的错误。