小编Ujv*_*ari的帖子

从Java调用一个非常简单的clojure函数是行不通的

我是学习Clojure的新手.这是我第一次也是非常简单的Clojure尝试,我在java代码中调用了一个简单的Clojure方法.不幸的是它不起作用.编译是成功的,并且从Clojure REPL开始,编写的函数按照它的顺序执行,但是从Java调用它时会说:

Exception in thread "main" java.lang.IllegalArgumentException: Wrong number of args (2) passed to: ClojNum$-myinc
 at clojure.lang.AFn.throwArity(AFn.java:439)
 at clojure.lang.AFn.invoke(AFn.java:43)
 at com.experimental.clojure.test.ClojNum.myinc(Unknown Source)
 at com.experimental.clojure.java.JavaCaller.main(JavaCaller.java:14)
Run Code Online (Sandbox Code Playgroud)

这是非常简单的Clojure代码:

(ns com.experimental.clojure.test.ClojNum
  (:gen-class
   :init init
   :name com.experimental.clojure.test.ClojNum
   :methods [
             [myinc [int] int]
  ]))

(defn -init [] [[] (atom [])])    
(defn myinc "comment" [x] (+ x 1))    
(defn -myinc "comment" [x] (myinc x))
Run Code Online (Sandbox Code Playgroud)

而java部分:

package com.experimental.clojure.java;

import com.experimental.clojure.test.ClojNum;

public class JavaCaller {
 /**
  * @param args
  */
 public static void main(String[] args) {
  int i = …
Run Code Online (Sandbox Code Playgroud)

java clojure

9
推荐指数
1
解决办法
936
查看次数

标签 统计

clojure ×1

java ×1