クラスのために、JVM コードを書く必要があり、Clojure を使用したいと考えています。ソフトウェアスタックの下部で動作するようになりましたが、上部と下部にある GUI レイヤーの間で動作させることができません。私の主な問題は、Java GUI に Clojure ファイルを認識させることです。これには Leiningen を使用したいのですが、Java コンパイル ソリューションはこの相互運用性を考慮していないようです。ここでの答えは、まさに私が必要としているもののようです。コードなどをどこに置くべきかわかりません(詳細が十分ではありません)。誰にもヒントはありますか?
プラグインを作ってみたのですが、うまくいきません。私のケースが間違いなく問題の周辺にあることはわかっていますが、解決策があれば、教室での Clojure の使用がはるかに簡単になります。
ありがとう!
詳細:
コンパイル済みの Clojure jar を使用することはあまりうまくいきませんでした。(うーん) ステートフルな Clojure クラスを作成する必要があります (つまり、メソッドを静的にすることはできません)。私のクラス (src/final_project/MyLinkLayer.clj) のコードは次のようになります
(ns final_project.MyLinkLayer
(:gen-class))
(defn -init[s] (print s))
(defn -send [dest data len] (println data))
(defn -recv [trans] (println trans))
(defn -status [] (println "I am a status!"))
(defn -command [cmd value] (println (str cmd " with value=" value)))
私のproject.cljは
(defproject final_project "0.1.0-SNAPSHOT"
:description "A simulated MAC layer."
:dependencies [[org.clojure/clojure "1.4.0"]
[local/classFiles "1"]]
:aot [final_project.MyLinkLayer])
クラスは "target/classes/final_project/" にうまくコンパイル ("lein compile") されますが、メソッドは表示されません。jar を介してクラスをロードできます (パッケージのプロジェクト インポートの最上位の Java 部分で Maven を使用すると、十分に機能します)。Eclipse で .class ファイルをチェックしたところ、生成されたメソッドは Object からのものだけでした。何かご意見は?また、実際に Clojure クラスの「ステートフル」な部分に到達したら、何かアイデアはありますか? 前もって感謝します。