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

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

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

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

时间: 2024-10-27 10:53:30

clojure引入另一个clojure实现的Java类的相关文章

Java类载入器 ClassLoader的解析

//參考 : http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 类载入器基本概念 类载入器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之中的一个.它使得 Java 类能够被动态载入到 Java 虚拟机中并运行. 类载入器从 JDK 1.0 就出现了.最初是为了满足 Java Applet 的须要而开发出来的.Java Applet 须要从远程下载 Java 类文件到浏览器中并运行.如今类载入器在 Web 容

使用Schemagen从java类变成schema

1.编写一个自己需要的java类 package com.soa.my.java2schema; public class Product { private static final long serialVersionUID=12345L; private String name; private int price; public String getName() { return name; } public void setName(String name) { this.name =

一个牛人给java初学者的建议

给初学者之一:浅谈java及应用学java 不知不觉也已经三年了 从不知java为何物到现在一个小小的j2ee项目经理虽说不上此道高手,大概也算有点斤两了吧每次上网,泡bbs逛论坛,没少去java相关的版面总体感觉初学者多,高手少,精通的更少由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间还有一个很重要的原因就是java这门语言更适合商业应用所以高校里大部分博士老师们对此语言的了解甚至不比本科生多在这种环境下,很多人对java感到茫然,不知所措,不懂java能做什么即便知道了

[转载]android工程中引入另一个工程中的资源

原文地址:android工程中引入另一个工程中的资源作者:87fayuan 在项目中可能遇到这样的问题:项目过大,于是细分为N个子模块来做,每个模块都是不同的工程.涉及到activity传数据时,可以用intent等方法来解决.但是如果涉及到要共用资源,而又不能像传统java程序那样打成jar包,比如程序中有大量自定义view,而这些自定义view都引用了的一些资源文件时,就可以用这个方法. 工程一:MyViews 代码如下: public class MyTextView extends Te

【JS】测试:HTML页面引入另一个HTML页面,同名ID会冲突吗

今天被问到一个问题,就是当页面HTML页面引入了另外一个HTML页面,恰好2个页面具有相同的ID,那么需要用ID来处理一些行为的时候会发生冲突或者报错吗? 我用了iframe来引入另外一个HTML页面. 先准备好材料:1个HTML页面(含iframe标签,我命名为test.html),再加一个HTML页面(作为iframe页面的src源,这个页面我命名为iframe.html).两个页面的内容分别如下: test.html: <!DOCTYPE html> <html> <h

Eclipse出现了一个找不到java\jdk1.6.0_23\bin\..\jre\bin\client\jvm.dll的错误

昨天打开Eclipse出现了一个找不到java\jdk1.6.0_23\bin\..\jre\bin\client\jvm.dll的错误,不知道所以,然后去这个路径下,发jvm.dll是存在的 然后怀疑是jre和jdk版本冲突的问题,因为机子装了不是一个系统,有32的也是有64的,而且前两天也出现在chrome下找不到java支持的情况,让我装chromejre的插件,丫丫的java的破东西 然后在网上搜问题的解决方案,很少,有两个是让从新安装jdk,然后从装jdk和jre无果,问题依然存在,然

spring-framework-3.2.4.RELEASE 综合hibernate-release-4.3.5.Final一个错误Caused by: java.lang.NoClassDefFound

LZ一体化的今天spring-framework-3.2.4.RELEASE 综合hibernate-release-4.3.5.Final一个错误Caused by: java.lang.NoClassDefFound Caused by: java.lang.NoClassDefFoundError: org/hibernate/service/jta/platform/spi/JtaPlatform. 最后从国外一篇文章找到解决的方法:原文地址例如以下:点击打开链接 产生原因是: Hibe

一个非常标准的Java连接Oracle数据库的示例代码

最基本的Oracle数据库连接代码(只针对Oracle11g): 1.右键项目->构建路径->配置构建路径,选择第三项"库",然后点击"添加外部Jar",选择"D:\Oracle\app\oracle\product\11.2.0\server \jdbc\lib\ojdbc6_g.jar"(注:D:\Oracle为数据库的安装路径). 2.以下代码为非常标准的Oracle数据库连接代码示例: /** * 一个非常标准的连接Oracl

【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添加进工作的build path.3.(关键的一步)将lib设为源文件夹.如果不设置,则程序编译可以通过,但运行的时候,会报: java.lang.NoClassDefFoundError # re: Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundErro