是否有人成功创建了一个结合Clojure和Java源的NetBeans项目?
我有一些项目,其中驱动程序(启动,gui,用户首选项等)是Java,但逻辑是在Clojure中。目前,我将Clojure代码编译到一个项目中的jar中,并将其作为库导入到单独的Java项目中。如果所有源都可以组合在一个NetBeans项目中,那将会很方便。
有没有人想出办法来做到这一点?
答案 0 :(得分:2)
一种可能的解决方案是修改NetBeans Java项目的Ant脚本(根目录中的build.xml)以获取它。
默认情况下,NetBeans在根项目目录的build.xml中创建多个占位符Ant目标,以便覆盖以自动执行标准构建过程之外的任务(例如编译其他语言以在当前项目中使用其库)。通过覆盖该构建脚本中的一个占位符目标,例如“-pre-compile”,您可以使用Ant“exec”任务编写一个简单的目标来调用Clojure编译过程,并将所有生成的类文件(或JAR)放入适当的构建目录。
如果您经常这样做,您可以定义一个Ant扩展(通过宏或Ant插件),这样您就不必每次都修改build.xml。
答案 1 :(得分:1)
我使用RT方法。我将我的Clojure代码放入我在启动时包含和处理的脚本文件中:
try {
RT.loadResourceScript("com/mydomain/app/clojure_scripts.clj"); // Initialize Clojure script processor with our script
} catch (Exception e) {
Util.logException(e, "Unable to run Clojure initialization script.");
}
然后,由于我的主要逻辑是Java,而我只是在调用Clojure进行计算,所以我使用了一些粘合代码来为我调用调用:
/*
* Class to wrap Clojure scripts with Java friendly methods.
*/
public class Clojure {
private static final String ns="com.mydomain.app";
public static double calculate(final double size, final double otherVar) {
Var report=RT.var(ns, "calculate");
return (Double) report.invoke(size, otherVar);
}
};