Maven中的Clojure和Java混合项目 [英] Mixed Clojure and Java project in Maven
本文介绍了Maven中的Clojure和Java混合项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在目录src/main/clojure
中有maven项目,我已输入代码:
I have maven project, in directory src/main/clojure
I have put code: https://github.com/8protons/url62/blob/master/src/url62/core.clj
我想用src/main/java
中的Java代码执行功能generate-id
.
I want to execute function generate-id
in Java code from src/main/java
.
IFn require = Clojure.var("clojure.core", "require");
require.invoke(Clojure.read("url62.core"));
IFn plus = Clojure.var("url62.core", "generate-id");
Object result = plus.invoke(UUID.randomUUID().toString());
System.out.println(result);
Maven配置:
<package>jar</package>
<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.8.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.theoryinpractise</groupId>
<artifactId>clojure-maven-plugin</artifactId>
<version>1.8.1</version>
<extensions>true</extensions>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这样可以编译
target/classes/
├── core.clj
└── url62
├── core.clj
├── core$fn__3.class
├── core$generate_id.class
├── core__init.class
├── core$int_to_base62.class
└── core$loading__5569__auto____1.class
但是Java代码失败:
but Java code fails:
clojure.lang.ArityException: Wrong number of args (1) passed to: core/generate-id
at clojure.lang.AFn.throwArity(AFn.java:429)
at clojure.lang.AFn.invoke(AFn.java:36)
at clojure.lang.Var.invoke(Var.java:383)
at url62.Url62Test.name(Url62Test.java:17)
推荐答案
好吧,clojoure函数没有参数:(
Ok, clojoure function has no arguments :(
Object result = plus.invoke();
这篇关于Maven中的Clojure和Java混合项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文