Я очень новичок в изучении Clojure. Это предназначалось для моих первых и очень простых попыток Clojure, в которых я называю простой метод Clojure из внутреннего кода Java. К сожалению, это не сработает. Компиляция прошла успешно и с Clojure REPL письменной функция делает так, как было приказано, но при вызове из Java он говорит следующее:Вызов очень простой функции clojure из 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)
Вот очень простой 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))
И 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);
}
}
Что я сделал не так? (Примечание снова: это код проверки primitve, чтобы сделать первый успешный вызов функции)
Спасибо за помощь, я не знаю.
http://stackoverflow.com/questions/2181774/calling-clojure-from-java – Jeremy