Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试java代码(eclipse)中调用的clojure函数_Java_Eclipse_Debugging_Scala_Clojure - Fatal编程技术网

调试java代码(eclipse)中调用的clojure函数

调试java代码(eclipse)中调用的clojure函数,java,eclipse,debugging,scala,clojure,Java,Eclipse,Debugging,Scala,Clojure,在下面的链接中,将演示如何编写一段clojure代码,然后我们可以在java源代码中直接调用其功能。为了复制,我们有一个名为tiny的clojure项目,其中有一个tiny.clj源文件。tiny.clj文件包含以下代码: (ns) (:gen类 :name com.domain.tiny :方法[#^{:静态真值}[二项式[int]双精度]]) (defn二项式 “计算二项式系数。” [n k] (让[a(inc n)] (循环[b 1 c 1] (如果(>BK) C (重复(包括b)(*(/

在下面的链接中,将演示如何编写一段clojure代码,然后我们可以在java源代码中直接调用其功能。为了复制,我们有一个名为tiny的clojure项目,其中有一个tiny.clj源文件。tiny.clj文件包含以下代码:

(ns)
(:gen类
:name com.domain.tiny
:方法[#^{:静态真值}[二项式[int]双精度]])
(defn二项式
“计算二项式系数。”
[n k]
(让[a(inc n)]
(循环[b 1
c 1]
(如果(>BK)
C
(重复(包括b)(*(/(-a b)b)c()()())))
(defn-二项式
“围绕‘二项式’函数的Java可调用包装器。”
[n k]
(二项式n k)
(defn-main[]
(println(str)(二项式53):(二项式53)))
(println(str)(二项式10042111):(二项式10042111)
)
然后将其导出到ttt.jar文件中,然后将其添加到tinyJava项目(这是一个java项目)的“引用库”中。tinyJava项目中有一个Main.java文件,其代码如下:

import com.domain.tiny;
公共班机{
公共静态void main(字符串[]args){
int j;
j=(int)微小二项式(5,3);
System.out.println(“(二项式53):”+j);
System.out.println(“(二项式10042111):”+微小的二项式(10042111));
}
}
然后输出为:

(binomial 5 3): 10
(binomial 10042, 111): 4.9068389575068143E263
我的问题是,在Main.java中的以下几点:

j = (int)tiny.binomial(5, 3);
有可能进入clojure源代码吗?我试过了,但没有成功

谢谢

[编辑]:我将jar添加到引用库的方式如下:

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

2) 选择:Java构建路径

3) 选择:图书馆

4) 单击“添加外部jar”

5) 然后转到ttt.jar的位置


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

例如,使用scala似乎很容易做到这一点(注意,下面的文章还讨论了互操作:)

我所做的如下:

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

类MyPrinter{
def printTerm(){
打印(“你好”);
}
}
2) 然后我创建了一个名为firstScalaJava的Java项目,然后在其中添加了一个名为Main.Java的文件,其中包含以下代码:

主类{
公共静态void main(字符串参数[]){
MyPrinter myPrint=新的MyPrinter();
myPrint.printTerm();
}
}
3) 然后我右键单击firstScalaJava,选择属性,选择Java构建路径,选择项目选项卡,单击“添加”,然后选择firstScala项目

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


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

您对“步骤”的含义是什么?你是说带着调试器走?