问题标签 [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.
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.
clojure - Clojuratica 设置
我正在尝试设置 Clojuratica(MMa v 9 免费试用版)(在运行 Mavericks 的 Mac 上)
我遵循“Clojure 数据分析食谱”中的说明,但也遵循了说明:
我收到错误消息:
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。
这里正在发生一些微妙的事情,它正在躲避我。有人有想法吗?
提前致谢。
编辑:这是完整的堆栈跟踪:
正如我所说,这对我来说毫无意义,但完全可以重现。
clojure - 如何使用 clj-http api 在 clojure 中创建多部分请求
我想使用clj-http
. 多部分请求如下:
我正在使用这个 Clojure 代码来构建多部分请求:
如何添加Content-Id
多部分?
java - 为什么 Clojure 现在从 JNLP 失败了?
我有一个已经使用了一段时间的 Java 应用程序,它使用嵌入式 Clojure 脚本进行一些计算。它的旧版本在当前的 JRE 中仍然可以正常运行,但是如果我构建一个新版本(只有对代码的更改是在不相关的 Java 代码中)它无法正常启动。它在本地也运行得很好。只有 JNLP 受到影响。
它失败的行是这样的:
我们目前正在为此应用程序使用自签名证书(上周我一直在与 Comodo 合作,试图获得一个受信任的证书,看看是否有帮助,但我仍然没有收到它,我需要这个应用程序尽快工作)。对我来说奇怪的是旧版本(也以完全相同的方式自签名)工作。我只是无法构建新版本。我已经回滚了我的配置,因此只有实际的 java 代码更改应该有所不同,但仍然没有运气。我在某处遗漏了一些东西......
clojure - Clojure - 从另一个命名空间访问 gen-class 的语法问题
似乎 lein 在如何重新编译代码方面是不可预测的。我在一个目录中有一个 gen-class 文件,试图在另一个目录中访问它。例如,给定这个 gen-class:
并尝试从另一个命名空间访问它,减少为尝试 1、2、3 的随机变化:
似乎没有语法可以识别“Target”而不是“a.Target”,所以我在处理 gen-class 的方式上显然有些不正确。这是一个问题,因为我正在尝试使用带注释的提供程序方法访问我们的 guice-injector,并且注释语法似乎不接受完整或简单的类规范:
或简化的:
clojure - java互操作的Clojure优化
在使用现有的 java 类时,如果我做错了什么,我经常会收到反射警告,例如
IllegalArgumentException 未找到匹配字段:获取类 java.lang.String clojure.lang.Reflector.getInstanceField (Reflector.java:271)
clojure 是否在运行时为给定方法的每次调用进行反射?还是以任何方式缓存?将任何涉及的 java-interop 移动到相关的 java 类中会有速度优势吗?
clojure - Clojure 新手 - 将 Java 代码重写为 Clojure
我有一些简单的工作 java 代码,它使用 SMACK xmmp 库来响应传入的消息并接受多用户聊天邀请。我正在尝试转换这个clojure。机器人登录但不响应消息。
serialization - Clojure:如何在编译时创建 Java 对象,而不是在加载时或运行时
我正在使用带有 Clojure 的 java 库。java 库只需要在编译时创建一个对象。通过 uberjar(使用 leiningen 创建)部署应用程序时,无法正确创建此配置对象而不会出现错误。
我可以通过宏在仅编译时创建对象。问题是它不可序列化。当应用程序通过 uberjar 运行时,如何使 jvm 可以使用此对象?将对象放入原子中不起作用,因为原子在加载时/运行时为运行 jar 的新 jvm 实例重置。编译时 jvm 需要一种方法将此对象放入其中一个 aot 编译类中。(gen-class) 似乎不起作用,因为它只能在运行时通过初始化程序初始化状态。