工作这是我myns名字/ junk.clj文件Clojure的:创一流的不是Java应用程序
(ns myns.junk
(:gen-class
:name booklist.util
:methods [[sq [int] int]]))
(defn sq [x] (* x x))
我跑lein ubserjar
没有问题。我已经导入生成的JAR在我的Java应用程序,然后运行这个
package javaapplication1;
import booklist.util;
public class JavaApplication1 {
public static void main(String[] args) {
util u = new util();
System.out.println(u.sq(45));
}
}
产生错误
异常线程 “main” java.lang.UnsupportedOperationException:□(myns.junk/-sq未定义?) at booklist.util.sq(Unknown Source) at javaapplication1.JavaApplication1.main(JavaApplication1.java:14) C:\ Users \ X750JA \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor -snippets \ run.xml:53:Java返回:1 BUILD FAILED(总时间:0秒)
我错过了什么,理想情况下,是否有任何类型的文档可用于详细解释这些内容?
编辑,每亚历杭德罗的答案,我想这
(ns myns.junk
(:gen-class
:name booklist.util
:methods [[sq [int] int]]))
(defn sq [x] (* x x))
(defn -sq
"A Java-callable wrapper around the 'sq' function."
[n]
(sq n))
现在产生错误
异常线程 “main” clojure.lang.ArityException:ARGS数目错误( 2)传递到:junk/-sq at clojure.lang.AFn.throwArity(AFn.java:429) at clojure.lang.AFn.invoke(AFn.java:36) at booklist.util.sq(Unknown来源) at javaapplication1.JavaApplication1.main(JavaApplication1.java:14) C:\ Users \ X750JA \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-snippets \ run.xml:53:Java返回:1 BUILD FAILED(总时间:0秒)
我伤口什么样的主意是这样的
(ns myns.junk
(:gen-class
:name booklist.util
:methods [#^{:static true} [sq [int] int]]))
(defn -sq [x] (* x x))
(-sq 7) ; works - 49
所以看起来我需要声明的方法为静态,并定义实际的方法来取得领先冲着名字。
感谢您的答复 - 我更新了我与尝试的问题 - 它似乎仍然Java的不喜欢:( –
@AdamRackis我认为它实际上应该是一个静态方法 –