[英]access clojure via java classes
您好,我在Java類中有一個主要方法,我想從我的Java類中訪問並運行我的clojure函數,可能嗎?
請幫助
如果只想調用在Clojure腳本中定義的函數,則以下代碼可以幫助您完成工作:
test.clj:
(ns test)
(defn hello [name]
(println (str "Hi " name "!")))
TestRun.java:
import clojure.lang.RT;
public class TestRun {
public static void main(String[] args) throws Exception {
RT.loadResourceScript("test.clj");
// var(namespace, function name).invoke(parameters..)
RT.var("test", "hello").invoke("Daisy Duck");
}
}
輸出:
Hi Daisy Duck!
確保您的類路徑上有Clojure jar
您是否將Clojure代碼編譯並打包在jar中? 您的課程路徑中有罐子嗎? 如果是這樣,您應該能夠像在Java中那樣使用jar中的類。
查看此問題的可接受答案: 從Java調用clojure
簡而言之,您可以將要公開的方法添加到名稱空間:
(ns com.domain.tiny
(:gen-class
:name com.domain.tiny
:methods [ [binomial [int int] double]]))
然后編寫函數。 用maven / leiningen編譯您的類文件
然后從Java調用它們:
System.out.println("(binomial 5 3): " + tiny.binomial(5, 3));
這只是摘錄。 看一下原始問題。
檢查Java腳本API,以調用腳本文件中的函數: http : //download.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.