【问题标题】:ClassCastException when returning LazySeq from Clojure to Java将 LazySeq 从 Clojure 返回到 Java 时出现 ClassCastException
【发布时间】:2012-02-17 21:28:20
【问题描述】:

我有返回 LazySeq 的 Clojure 函数。当我从 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]])

这里出了什么问题?

【问题讨论】:

    标签: java clojure interop classcastexception gen-class


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        • 1970-01-01
        相关资源
        最近更新 更多