clojure別のclojure実装Javaクラスを導入
1490 ワード
ちょっと早口ですが、そういうことです.
core.cljファイルではJavaクラスを使用します.このJavaクラス(MoveDailyAction)は同じプロジェクトのclojureコードコンパイルによって生成されます.clojure->java classは前のブログを参照してください.
clojure実装javaクラス
clojureで生成したJavaクラスのclassファイルを指定したディレクトリの下に置く必要があります.core.cljはこのclassファイルを参照することができる.これは主にleiningenエンジニアリングによって構成されています
1つ目はcompile-pathで設定する必要があります
2つ目はjava-source-pathsで設定する必要があります
注意::aot設定時に依存するclojureクラスは先にコンパイルする必要があるため、前に置く
コマンドコンパイルを実行しましょう.
完了します.
leiningen公式ドキュメントにはcompile-pathが記録されていません.githubのexampleを参照してください.
https://github.com/technomancy/leiningen/blob/master/sample.project.clj
core.cljファイルではJavaクラスを使用します.このJavaクラス(MoveDailyAction)は同じプロジェクトのclojureコードコンパイルによって生成されます.clojure->java classは前のブログを参照してください.
clojure実装javaクラス
clojureで生成したJavaクラスのclassファイルを指定したディレクトリの下に置く必要があります.core.cljはこのclassファイルを参照することができる.これは主にleiningenエンジニアリングによって構成されています
1つ目はcompile-pathで設定する必要があります
:compile-path "%s/classy-files"
コンパイル結果は次のディレクトリに表示されます.ls target/uberjar+uberjar/classy-files/kafka2hdfs/
core.class core$_main.class MoveDailyAction$_execute.class MoveDailyAction$loading__4910__auto__.class
core$fn__48.class core$mk_topology.class MoveDailyAction$fn__26.class
core__init.class core$submit_topology_BANG_.class MoveDailyAction__init.class
core$loading__4910__auto__.class MoveDailyAction.class MoveDailyAction$_init.class
2つ目はjava-source-pathsで設定する必要があります
:java-source-paths ["%s/classy-files"]
は、最初のステップでコンパイルされたclassファイルを使用することができます.注意::aot設定時に依存するclojureクラスは先にコンパイルする必要があるため、前に置く
:aot [kafka2hdfs.MoveDailyAction kafka2hdfs.core]
コマンドコンパイルを実行しましょう.
lein do clean, uberjar
完了します.
leiningen公式ドキュメントにはcompile-pathが記録されていません.githubのexampleを参照してください.
https://github.com/technomancy/leiningen/blob/master/sample.project.clj