我相对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