gpt4 book ai didi

java - Clojure Java 互操作错误 : Illegal Argument Exception: NO MATCHING CONSTRUCTOR FOUND

转载 作者:行者123 更新时间:2023-12-04 05:13:38 25 4
gpt4 key购买 nike

我找到了 this related question on Stack Overflow ,但它并没有真正回答我的问题。

我有一个已打包为 JAR 文件的 Java 应用程序。我还有一个打包为 JAR 文件的 Clojure 应用程序。我现在正在编写另一个使用前两个作为库的 Clojure 应用程序。

这是似乎是我的错误来源的 Java 代码:

public class ServerBuilder {
private HashMap<String, ResponseObject> routes = new HashMap<String, ResponseObject>();
public int limit;
public ServerSocket serverSocket;
private ThreadBuilder threadBuilder;
public int count;

public ServerBuilder(int limit) {
this.limit = limit;
}

public void begin() throws IOException {
if(getServerSocket() == null) {
this.serverSocket = new ServerSocket(4444);
}
int count = 0;
while(count < limit) {
createThreadBuilder(serverSocket);
new Thread(threadBuilder).start();
count = count + 1;
this.count = count;
}
}

然后在我的 Clojure 代码中,我像这样访问我的 Java 代码:
(ns browser_tic_tac_toe.core
(:import (server ServerBuilder)))

(defn -main []
(let [server-builder (ServerBuilder. 100)] ; the error points me to this line
(doto
server-builder (.begin))))

我得到的错误是:
Exception in thread "main" java.lang.IllegalArgumentException: No matching ctor found for class server.ServerBuilder

我在谷歌上搜索过这个,并没有找到太多。该错误显然意味着“没有为此类找到匹配的构造函数”,但在我看来构造函数确实匹配。这就是为什么我很困惑。

编辑

我尝试更改我传递的类型(从 longint ):
(defn -main []
(let [limit (int 100)
server-builder (ServerBuilder. limit)]
(doto
server-builder (.begin))))

最佳答案

与Java相反,我相信primitive literals在 clojure 中有 longs ,不是 ints , 并且 clojure 找不到构造函数 ServerBuilder(long) .

关于java - Clojure Java 互操作错误 : Illegal Argument Exception: NO MATCHING CONSTRUCTOR FOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com