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?

È stato utile?

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
scroll top