Tôi rất mới trong việc học Clojure. Đây là Clojure đầu tiên và rất đơn giản của tôi, trong đó tôi gọi một phương thức Clojure đơn giản từ bên trong mã java. Thật không may nó không hoạt động. Compilation là thành công và từ Clojure REPL chức năng bằng văn bản thực hiện vì nó được lệnh, nhưng khi gọi từ Java nó nói như sau:Gọi hàm clojure rất đơn giản từ Java không hoạt động
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)
Đây là mã Clojure rất đơn giản:
(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))
Và phần 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 = 0;
System.out.println(i);
ClojNum c = new ClojNum();
i = c.myinc(0);
System.out.println(i);
}
}
Tôi đã làm gì sai? (Lưu ý một lần nữa: Đây là mã kiểm tra primitve chỉ để thực hiện cuộc gọi hàm thành công đầu tiên)
Cảm ơn sự giúp đỡ, tôi không biết gì.
http://stackoverflow.com/questions/2181774/calling-clojure-from-java – Jeremy