2011-07-08 16 views
5

誰かがClojureとJavaソースを組み合わせたNetBeansプロジェクトを正常に作成しましたか?同じNetBeansプロジェクトのClojureとJavaソース

私は、ドライバプログラム(スタートアップ、GUI、ユーザ設定など)がJavaで実行されているが、ロジックはClojureにあるプロジェクトを持っています。現時点では、Clojureコードをあるプロジェクトのjarファイルにコンパイルし、別のJavaプロジェクトのライブラリとしてインポートします。 1つのNetBeansプロジェクトですべてのソースを組み合わせることができれば便利です。

誰かがこれを行う方法を思い付いていますか?

+0

私はNetBeansでこれを行っていませんでしたが、それは同じアプローチが動作する可能性がありそうEclipseで作業している:私のためのコールマッピングするために、Javaプロジェクトとして設定すべてをバックアップすることはクラスパスにClojureの瓶を持っており、実行時にクラスパス上で使用できるように、ビルドに.cljファイルを含めます。 – mikera

答えて

2

解決策の1つは、NetBeans JavaプロジェクトのAntスクリプト(ルートディレクトリのbuild.xml)を変更することです。

デフォルトでは、NetBeansはルートプロジェクトディレクトリのbuild.xmlにいくつかのプレースホルダAntターゲットを作成して、標準のビルドプロセス(現在のプロジェクトでライブラリを使用するための他の言語のコンパイルなど)以外のタスクを自動化します。 "-pre-compile"のようなビルド・スクリプトのプレースホルダ・ターゲットの1つをオーバーライドすると、Antの "exec"タスクを使用してClojureコンパイル・プロセスを呼び出し、すべての結果のクラス・ファイル(またはJAR)を適切なビルドディレクトリ。

これを頻繁に行う場合は、マクロまたはAntプラグインを使用してAnt拡張を定義して、毎回build.xmlを変更する必要がなくなります。

+0

いいアイデア!過去に他の目的でプレースホルダターゲットを使用しましたが、これは私には起こりませんでした。 – clartaq

+0

それはあなたのためにうまくいってうれしい!私たちが設計した独自の言語のビルドスクリプト言語としてAntを使用する必要があるので、私は実際に考えました(すべてのソースファイルを手作業でコンパイル/リンクしない限り)。 Antにビルドツールを書くと、これは、そうでなければ脆弱な中間言語をEclipse/NetBeans Javaプロジェクトのすべてに統合しようとします。 – depthfirstdesigner

1

私はRTメソッドを使用します。私のメインのロジックはJavaであると私は唯一の計算のための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."); 
     } 

その後:私は、起動時にスクリプトの私には、ファイルやプロセスに私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); 
    } 
}; 
関連する問題