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

clojure - Clojure 向 JPanel 添加边框并通常访问对象中的 java 方法

来自 LISP 的我在访问 java 对象时遇到了最具挑战性的时刻。我正在尝试在 JPanel 上放置一个带标题的边框。这是我的代码和异常:

我在哪里可以找到处理这种情况的规则?一如既往,您的帮助将不胜感激。

我感谢大家的回答和澄清。我正在发布该功能的基础知识,以便我们都知道要参考什么:

像这样,该功能没有问题,但我想做的是在 panel_0 上放置一个 TitledBorder。按照您的指示,我尝试以不同的方式进行编码,但到目前为止还没有成功。
再次感谢大家的帮助。

更新:对不起gogloplex。由于所有这些混乱,我正在运行不同的定义。是的,正如你和 Kugathasan 所说的那样。我最终编码为:

它成功了!感谢大家为此付出时间。

0 投票
2 回答
1052 浏览

clojure - clojure gen-class 可变参数构造函数

在 :constructors 映射和后续的 -init 定义中,我如何表示一个可变参数构造函数(假设超类有多个构造函数,其中一个是可变参数)?

0 投票
2 回答
2229 浏览

clojure - 为什么 (int 10) 会产生一个 Long 实例?

为什么不(int 10)产生类型的实例java.lang.Integer

0 投票
2 回答
433 浏览

clojure - 为什么我的 LDAP 分页结果函数的 Clojure 实现不起作用?

TLDR;这不是一个措辞恰当的问题,因此您可能不应该为此烦恼。我会在不久的将来删除它,除非人们认为它有一些赎回功能,而不是作为如何不在 Stack Overflow 上提问的一个很好的例子。

我正在为我的一个项目使用 UnboundID LDAP SDK。我目前坚持实现分页结果搜索(在 RFC2696 中描述),为此我有一个有效的 Java 实现。我已经测试了 Java 代码,并且知道它可以在我的测试 LDAP 目录中正常工作。Java 实现的主要部分是以下 do..while 循环:

请求“控制”被添加到搜索请求中,向服务器指示它应该发回匹配条目的子集。假设初始请求有效,LDAP 服务器返回 pageSize 条目和包含特殊“cookie”的响应控件。为了获得结果的下一个“页面”,客户端重新发送请求,cookie 包含在请求控件中,服务器在后续响应中包含一个新的 cookie。这个循环一直持续到没有更多条目要返回,在这种情况下,没有 cookie 被返回给客户端并且搜索请求完成。

我试图将上面的代码移植到 Clojure,但到目前为止我一直无法让它工作。这是代码:

Java 代码通过 18 个请求检索 1720 个条目,但我的代码在 5 个请求后因“超出大小限制”LDAPSearchException 而失败。

我对你们的问题是为什么这两种实现的行为不同?我知道我会在每个新请求中发送接收到的 cookie,因为如果同一个 cookie 被使用两次,则会引发异常。我还认为我知道我正在获得后续页面的结果,因为每个页面返回的条目集是不同的。

我被难住了,不喜欢拖出 Ettercap 来分析流量的想法。当然,我的代码中有一些非常明显的错误导致了不同的行为。

0 投票
1 回答
148 浏览

clojure - 从 Java 调用 Clojure 1.3

我想从 Java 代码中调用 Clojure 函数。这个问题最近没有被问到,现有的答案对我不起作用。(Clojure 1.3,leiningen 1.7.0)。我有以下最小程序:

项目 .clj 如下所示:

我生成了一个 uberjar,然后将它复制到与这个 Java 小程序相同的目录中。

我使用这个命令编译:

编译成功,但程序在运行时失败(ClassNotFoundException)。直接调用 foo 的第二种形式,如 foo(5),甚至无法编译。我也尝试过在 :gen-class 中使用和不使用“静态”声明。

0 投票
2 回答
218 浏览

performance - 奇怪的 get 优化行为

跟进这个关于get性能的问题

在优化方面似乎有一些非常奇怪的事情。我们知道以下情况是正确的:

然而,一些进一步的实验真的让我很奇怪:

没有反射警告,不需要提示。通过将 get 绑定到根 var 或 let 可以看到相同的行为。

知道为什么绑定的 get 似乎“知道”如何优化,而核心功能不知道吗?

0 投票
1 回答
3456 浏览

clojure - 使用“lein run”运行时不会触发关闭挂钩

我有以下代码:

和以下 project.clj

当我使用“lein run”运行它时,关闭挂钩仅在正常程序执行时执行,而不是在接收 SIGINT (Ctrl-C) 时执行

即使在接收到 SIGINT 时,在 lein 之外运行的相同代码也会成功执行关闭挂钩。

从 lein 运行并使用 Ctrl-C 中止时,如何执行关闭挂钩?

0 投票
1 回答
267 浏览

java - 如何在clojure中将图像背景添加到JTable

我在 clojure 中编写了这个程序来将背景图像添加到 JTable。我被这个prepareRenderer功能困住了。似乎 clojure 无法处理第一个参数rd(等效 Java TableCellRenderer rd)。我可能在这里做错了,如果有人可以帮助我解决这个问题,我将非常感激。要运行该程序,只需将其保存到一个tabletest.clj文件并在 clojure 提示符下键入:

如果您注释掉该prepareRenderer函数,您可以在不看到背景图像的情况下成功运行代码。

请为 JTable 背景提供您自己的图像文件。该程序如下所列:

0 投票
1 回答
921 浏览

clojure - 在 Clojure 中为 Java 互操作创建 Java 枚举

我不知道如何在 Clojure 中创建 Java 枚举。我想创建一个使用 Java 接口的 Java 枚举,然后将其传递给 Java 方法,这一切都在 Clojure 中。我想这样做以使用 neo4j 图形库(我不想使用某人的预建界面,我想编写自己的互操作代码)。

我在互联网上搜索,看起来我可以使用代理方法,但我一辈子都无法让它工作。这是我需要在 Clojure 中编写的等效 Java 代码:

这是我的尝试(这是不对的:():

我还想知道是否有一个好的网站可以记录我所缺少的此类内容。我知道 Clojure 站点上的 Clojure 文档,这确实很有用,但例如使用示例,我并不总是能找到我需要的东西。也许我需要一本好的参考书?

0 投票
3 回答
330 浏览

clojure - clojure a 与非标准迭代 java API 的互操作

我正在使用一个 java 类在 clojure 中工作,该类为包含一系列记录的域特定二进制文件提供检索 API。

java 类用一个文件初始化,然后提供一个.query方法,该方法返回一个只有一个方法的内部类的实例.next,因此不能很好地使用通常的 java 集合 API。外部类和内部类都没有实现任何接口。

.query方法可能返回 null 而不是内部类。该.next方法返回一个记录字符串,如果没有找到更多记录,则返回 null,它可能会在第一次调用时立即返回 null。

如何在不编写更多 Java 类的情况下使这个 Java API 在 clojure 中正常工作?

我能想到的最好的是:

这给了我一个与 clojure seq 抽象一起使用的结果向量。是否有其他方法可以从 java API 公开序列,无论是使用惰性序列还是使用协议?