簡體   English   中英

通過java類訪問clojure

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM