同一个NetBeans项目中的Clojure和Java源代码



是否有人成功创建了一个NetBeans项目,结合了Clojure和Java源代码?

我有一些项目,其中驱动程序(启动,gui,用户偏好等)是在Java中,但逻辑是在Clojure。目前,我将Clojure代码编译到一个项目中的jar中,并将其作为库导入到另一个Java项目中。如果所有的源代码都可以合并到一个NetBeans项目中,那将是很方便的。

有没有人想出一个方法来做到这一点?

一种可能的解决方案是修改NetBeans Java项目的Ant脚本(根目录中的build.xml)来拥有它。

默认情况下,NetBeans在根项目目录的build.xml中创建几个占位符Ant目标,供您覆盖以自动执行超出标准构建过程的任务(例如编译其他语言以在当前项目中使用它们的库)。通过覆盖构建脚本中的一个占位符目标,例如"-pre-compile",您可以编写一个简单的目标,使用Ant"exec"任务调用Clojure编译过程,并将所有生成的类文件(或JAR)放在适当的构建目录中。

如果你经常这样做,你可以定义一个Ant扩展(通过一个宏或Ant插件),这样你就不必每次都修改build.xml了。

我使用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);
    }
};

相关内容

  • 没有找到相关文章

最新更新