ClassCastException durante la restituzione di LazySeq da Clojure a Java
-
27-10-2019 - |
Domanda
Ho la funzione Clojure che restituisce un LazySeq.Quando eseguo questa funzione da REPL, funziona perfettamente.Tuttavia, se provo a chiamare la stessa funzione da codice Java come questo:
Object result = com.acme.forecast.core.runforecast("file1.csv", "file2.txt");
Ottengo la seguente eccezione:
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)
La mia classe gen dice che sto restituendo un LazySeq, non un numero:
(:gen-class
:name com.acme.forecast.core
:methods [#^{:static true} [runforecast [String String] clojure.lang.LazySeq]])
Cosa c'è che non va qui?
Soluzione
L'errore dice che stai restituendo LazySeq.Il problema è che sta cercando di essere memorizzato in un numero, anche se non riesco a vedere dove in questo segmento di codice.
Altri suggerimenti
Non importa.Ho trovato il problema.C'era una vecchia versione del file .class in giro.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow