将Czyjure中的LazySeq返回给Java时出现ClassCastException

时间:2012-02-17 21:28:21

标签: java clojure interop classcastexception gen-class

我有Clojure函数,它返回一个LazySeq。当我从REPL运行此函数时,它工作得很好。但是,如果我尝试从Java代码中调用相同的函数,如下所示:

Object result = com.acme.forecast.core.runforecast("file1.csv", "file2.txt");

我得到以下异常:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: 
  clojure.lang.LazySeq cannot be cast to java.lang.Number
    at com.acme.forecast.core.runforecast(Unknown Source)
    at com.acme.forecast.client.gui.ClientGUI.actionPerformed(ClientGUI.java:180)

我的gen-class说我正在返回一个LazySeq,而不是一个数字:

  (:gen-class
    :name com.acme.forecast.core
    :methods [#^{:static true} [runforecast [String String] clojure.lang.LazySeq]])

这里出了什么问题?

2 个答案:

答案 0 :(得分:3)

该错误确实表明您正在返回LazySeq。问题是它试图存储在一个数字中,虽然我看不到这段代码中的位置。

答案 1 :(得分:1)

没关系。我发现了这个问题。有一个旧版本的.class文件。