ClassCastException при возврате LazySeq из Clojure в Java - PullRequest
3 голосов
/ 18 февраля 2012

У меня есть функция 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)

Мой класс говорит, что я возвращаю LazySeq, а не номер:

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

Что здесь не так?

Ответы [ 2 ]

3 голосов
/ 18 февраля 2012

Ошибка говорит, что вы возвращаете LazySeq. Проблема в том, что он пытается храниться в Number, хотя я не вижу, где находится этот сегмент кода.

1 голос
/ 18 февраля 2012

Неважно.Я нашел проблему.Возникла старая версия файла .class.

...