我相對Clojure和Java的新手。我有一個現有的Clojure項目,別人寫道,我試圖使用node-java嵌入到NodeJS中。如何從Clojure中導出Java類(.jar)?
Clojure的
該項目定義了一個命名空間提供了一定的公共職能,比如:
(ns my.namespace
(:require ...etc...))
(defn dosomething ...)
(defn dosomethingelse ...)
我已經建立了leiningen(lein jar
和lein uberjar
)項目。
問題
節點-Java中的#import() docs說我需要導入一個java類,像這樣:
const java = require('java');
var Test = java.import('Test');
- 我怎樣才能訪問這些功能(這應該是Java類的靜態方法?)
- 我接近這一切都錯了嗎? =)
更新
感謝MAGOS(以下回答)我做了一點進展。事實證明,我可以在(ns ...)
範圍內使用(:gen-class :name my.name)
來告訴它生成一個類。如果我添加一個配置文件到project.clj像這樣:
...
:profiles {
...
:uberjar {:aot :all}
}
...
它會編譯,我現在可以看到類中的節點。不過,我仍然沒有想出如何導出這些方法。現在就在那部分工作。
我認爲導入由Java項目製作的.jar和由Clojure項目製作的.jar是沒有區別的。您是否能夠從Java項目導入任何.jars文件? Clojure因素可能是紅鯡魚。 – Carcigenicate
@Carcigenicate當我添加jar時,它沒有給出錯誤。但更重要的一點(我認爲)是我不知道生成的.jar中的類是什麼。我能否以某種方式查明罐子中的哪些類可用? –
那,我不知道。我會在一個好的IDE中打開它,嘗試導入它,然後看看自動完成是否給你提示。我希望他們都在'Test'下,並使用JS的成員訪問運算符進行訪問。如果你找不到深入的指南,只是玩耍可能會有用。 – Carcigenicate