Clojure Java互操作性

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

我对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 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密码有错误。