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

原创 2015年11月19日 00:19:46

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

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 导入包

最近迷上了markdown编辑,总是迫不及待想要拿来记录点什么。看Storm源码总是看到包和方法的引用,一而再再而三的没有记住,索性就抄一篇文章以加深记忆,只是原文没有什么排版可言。本人只是用mark...
  • abeeleakey
  • abeeleakey
  • 2017年06月30日 22:23
  • 128

clojure用gen-class来实现java接口,及java中测试

clojure借助gen-class实现java接口,提前编译为class文件? 这在很长一段时间困扰了我,虽然如《clojure编程》中也有介绍,但是却不知道如何运行, 一些细节没被提到,让我与...
  • lx1848
  • lx1848
  • 2016年06月07日 17:06
  • 464

关于clojure的ns中的require,use,import等

关于require require只负责引入clojure库,不绑定函数到当前的ns中。 Clojure代码 ;;引入java io,并指定缩略名为io (require ‘[clojure...
  • liuminsds
  • liuminsds
  • 2016年10月10日 16:40
  • 875

clojure实战——日志处理

clojure实战——日志处理1. 关于日志的一些想法日志对于开发人员来说,是定位、分析软件故障时的重要依据;对于运维人员来说,是了解软件运行状态、系统状态的重要途径;对于业务需求方来说,是获取统计...
  • Linux2_SCDN
  • Linux2_SCDN
  • 2015年10月29日 23:30
  • 965

clojure实战——如何在java中调用clojure函数

clojure作为一门函数式编程语言,有其自身的优势,比如可以用极为精简的代码写一些逻辑运算,灵活的edn文件配置,编程效率特别高。因此,在需要编写一些较为复杂的逻辑模块或者是要和第三方clojure...
  • Linux2_SCDN
  • Linux2_SCDN
  • 2016年08月27日 08:21
  • 942

【Clojure】在loop-recur中实现多重循环

在loop-recur中实现多重循环(里:如何造一个轮子)
  • zhenaodingpao
  • zhenaodingpao
  • 2016年07月09日 01:14
  • 361

Clojure入门教程

转载自网址:  http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutoria...
  • caodaoxi
  • caodaoxi
  • 2012年11月18日 00:32
  • 869

Clojure入门教程: Clojure – Functional Programming for the JVM中文版

作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://xumingming.sinaapp.com/302/clojure-f...
  • libing13810124573
  • libing13810124573
  • 2014年04月09日 22:30
  • 733

Java web 导入包的问题

之前一直在纠结那些tomcat包是怎么顺利导入的,我整的那么凌乱。今天终于知道怎么弄了:(以下借鉴的别人的文章网址:http://www.blogjava.net/lzhidj/archive/200...
  • shanyinxiao
  • shanyinxiao
  • 2015年06月10日 15:33
  • 830

Clojure 学习入门(19)—— 数组

1、创建数组1.1 从集合创建数组 into-arrayinto-array(into-array aseq) (into-array type aseq)返回包含aset中所有元素的数组。数组的组件...
  • sunboy_2050
  • sunboy_2050
  • 2014年04月27日 22:30
  • 8293
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:clojure引入另一个clojure实现的Java类
举报原因:
原因补充:

(最多只允许输入30个字)