Clojure Java互操作性
我对Clojure不熟悉。我试图理解clojure java互操作。我有一个java hashmap,我需要在Clojure程序中使用它。我试图在哈希映射上迭代,但它给了我一个错误Clojure Java互操作性,java,clojure,clojure-java-interop,Java,Clojure,Clojure Java Interop,我对Clojure不熟悉。我试图理解clojure java互操作。我有一个java hashmap,我需要在Clojure程序中使用它。我试图在哈希映射上迭代,但它给了我一个错误 Main.java: package com.example; import java.util.HashMap; import java.util.Map; import clojure.java.api.Clojure; import clojure.lang.IFn; class Ma
Main.java:
package com.example;
import java.util.HashMap;
import java.util.Map;
import clojure.java.api.Clojure;
import clojure.lang.IFn;
class Main {
public static void main( String[] args ) {
IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("com.example.core"));
IFn Print = Clojure.var("com.example.core", "Print");
Map<String, String> map = new HashMap<>();
map.put("message", "hello world");
Print.invoke(map);
}
}
core.clj:
(ns com.example.core
(:gen-class))
(defn Print [m]
(doseq [[k v] map] (prn k v)))
(defn -Print [m]
(Print m))
Main.java:
包com.example;
导入java.util.HashMap;
导入java.util.Map;
导入clojure.java.api.clojure;
导入clojure.lang.IFn;
班长{
公共静态void main(字符串[]args){
IFn require=Clojure.var(“Clojure.core”、“require”);
require.invoke(Clojure.read(“com.example.core”);
IFn Print=Clojure.var(“com.example.core”、“Print”);
Map Map=newhashmap();
map.put(“message”、“hello world”);
打印.调用(map);
}
}
core.clj:
(ns com.example.core)
(:gen类)
(定义打印[m]
(doseq[[k v]映射](prn k v)))
(定义-打印[m]
(印刷体(m))
当我试图将程序作为java应用程序运行时,它说-
线程“main”java.lang.IllegalArgumentException中的异常:不知道
如何从clojure.core$map创建ISeq
当我试图将其作为clojure应用程序运行时,它会说-
线程“main”clojure.lang.ArityException中的异常:错误的
args(0)传递给:core/-main
我尝试在互联网上搜索资源,到处都有人说我们需要像使用clojure地图一样使用java hashmap。但是没有什么对我有用,我不知道我做错了什么
任何帮助都将不胜感激。(defn Print[m]
(doseq[[k v]映射](prn k v)))
我认为map是对m的支持,我想我终于解决了这个问题。我的Clojure密码有错误。