java 怎么调用clojure_调试在java代码中调用的clojure函数(eclipse)

在下面的链接

Calling clojure from java中,说明了如何编写一段clojure代码,然后我们可以在java源代码中直接调用它们的功能.为了重现,我们有一个名为tiny的clojure项目,其中包含一个tiny.clj源文件. tiny.clj文件包含以下代码:

(ns tiny

(:gen-class

:name com.domain.tiny

:methods [#^{:static true} [binomial [int int] double]]))

(defn binomial

"Calculate the binomial coefficient."

[n k]

(let [a (inc n)]

(loop [b 1

c 1]

(if (> b k)

c

(recur (inc b) (* (/ (- a b) b) c))))))

(defn -binomial

"A Java-callable wrapper around the 'binomial' function."

[n k]

(binomial n k))

(defn -main []

(println (str "(binomial 5 3): " (binomial 5 3)))

(println (str "(binomial 10042 111): " (binomial 10042 111)))

)

然后将其导出到ttt.jar文件中,然后将其添加到tinyJava项目(这是一个java项目)的“Referenced Libraries”中.在tinyJava项目中有一个Main.java文件,它有以下代码:

import com.domain.tiny;

public class Main {

public static void main(String[] args) {

int j;

j = (int)tiny.binomial(5, 3);

System.out.println("(binomial 5 3): " + j);

System.out.println("(binomial 10042, 111): " + tiny.binomial(10042, 111));

}

}

输出是:

(binomial 5 3): 10

(binomial 10042, 111): 4.9068389575068143E263

我的问题是,在Main.java中的以下几点:

j = (int)tiny.binomial(5, 3);

是否有可能进入clojure源代码?我试过了,但没用.

谢谢

[编辑]:我将jar添加到Referenced Libraries的方式如下:

1)右键单击项目tinyJava&选择属性

2)选择:Java Build Path

3)选择:图书馆

4)点击:“添加外部罐子”

5)然后去ttt.jar的位置

[编辑2]:对于scala项目,似乎可以以稍微不同的方式实现这一点(见下文),其中一个链接项目而不是显式导出jar文件.

最佳答案 例如,这似乎很容易用Scala做(注意下面的文章也讨论了互操作:

How do you call Scala objects from Java?).

我做了如下:

1)设置一个名为firstScala的Scala项目,并使用以下代码添加文件MyPrinter.scala:

class MyPrinter{

def printTerm() {

print("hello");

}

}

2)然后我创建了一个名为firstScalaJava的Java项目,然后我使用以下代码添加了一个名为Main.java的文件:

class Main {

public static void main(String args[]) {

MyPrinter myPrint = new MyPrinter();

myPrint.printTerm();

}

}

3)然后我右键单击firstScalaJava,选择Properties,选择Java Build Path,选择Projects选项卡,单击“Add”,然后选择firstScala项目.

4)然后,如果我在“myPrint.printTerm();”处设置断点并且当调试器此时停止时单击F5,调试器自动进入Scala源文件.

关于这个的好处是我不需要导出任何jar文件或类似的东西.这很有吸引力,因为在更改Scala代码时,不需要做任何事情(eclipse会在之后尝试运行java项目时自动重建scala项目),而如果我更改了Clojure代码,则需要重新导出jar等…(请注意,以上述方式链接项目不适用于clojure案例)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值