首页 > 编程语言 > 详细

clojure引入另一个clojure实现的Java类

时间:2015-11-19 00:42:17      阅读:251      评论:0      收藏:0      [点我收藏+]

说起来有点绕口,是这么回事。

core.clj文件里面要使用一个Java类,这个Java类(MoveDailyAction)是由同一个项目的clojure代码编译生成的,clojure -> java class请参考之前的博客

clojure实现java类

现在需要将clojure生成的Java类的class文件放在指定的目录下,然后让core.clj能够引用到这个class文件。这就主要靠leiningen工程配置

第一个需要用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


第二个需要用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




版权声明:本文为博主原创文章,未经博主允许不得转载。

clojure引入另一个clojure实现的Java类

原文:http://blog.csdn.net/csfreebird/article/details/49916071

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!