ClassCastException [Resolvido - bug java]

Oi,

Está acontecendo um problema com meus objetos gravados na base de dados.
Sempre quando é tentato recuperar mostra essa coisa.:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.util.SimpleTimeZone cannot be cast to sun.util.calendar.ZoneInfo at java.util.Calendar$1.run(Unknown Source) at java.util.Calendar$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.util.Calendar.readObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at lib.VeSUtil.StreamToObject(VeSUtil.java:6391) at lib.VeSUtil.ByteToObject(VeSUtil.java:6317) at util.VeSTesteUtil$13.actionPerformed(VeSTesteUtil.java:347) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

Não tenho a menor idia do pq isso está acontecendo agora. Nunca aconteceu… alguma dica ?
Obs: Eu sei o que significa esse exception, porém não sei o motivo de acontecer somente agora… será a versão do JAVA ?

Tchauzin!

Bom dia,

Eu já tive um problema semelhante a esse, devido ao formato que a data vinha do banco de dados, aí quando jogava no atributo do meu objeto dava esse erro. Abaixo segue uns fragmentos de códigos usados por mim


private SimpleDateFormat formatIso = new SimpleDateFormat("yyyy-MM-dd");//formatar data p/ inserção no BD
private SimpleDateFormat formatBra = new SimpleDateFormat("dd/MM/yyyy");//formatar data p/ apresentação

//rotina que carrega do BD
private DateUtils util = new DateUtils();
dto.setDataAdesao(util.formatDataIsoToBra(rs.getString(i++)));
//

public String formatDataIsoToBra(String dataIso) throws ParseException {
    if(dataIso==null)
        return null;

    date = formatIso.parse(dataIso);
    return (formatBra.format(date));
}

Olá Lina, na minha opinião pode ser problema de incompatibilidade da versão do JDK com o BD…verifique as versões de ambos quando vc os usava e dava certo…

Oi,

então… na verdade quando eu falo em recuperar, estou dizendo da seguinte maneira.:

(Converte os dados lidos de InputStream para objeto)

[code]InputStream
object = new ByteArrayInputStream(lo_rs.getBlob(“Tipo_Objeto”).getBytes(new Long(1).longValue(), new Long(lo_rs.getBlob(“Tipo_Objeto”).length()).intValue()));

(Serializable)new ObjectInputStream((InputStream) new InflaterInputStream(object)).readObject()[/code]

Aqui está mostrando a exceção…

Tchauzin!

Creio que é um erro na serialização, mas não tenho experiencia suficiente para lhe ajudar :frowning: desculpa…deve ser a mudança/atualização de JDK mesmo…

Deixa eu te perguntar.
Esse relatório funcionava antes?
Tem algum campo que você traz do banco que é java.util.SimpleTimeZone?
Que tipo de dados contém na coluna Tipo_Objeto?

[]'s
JL

Lina tentou usar Date ao invés de Calendar?

Oi,

então… Tipo_Objeto é um Blob. Ou seja, aceita tudo que for Binario ou Bytes…

Recebe algumas datas, mas não em especifico SimpleTimeZone.
O estranho é que na hora de armazenar no banco funciona, porém quando recupero do banco acontece isso …

Tchauzin!

Dá uma olhada: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4401148

Oi,

poisé… pelo artigo parece ser erro de jdk/jre mesmo…

Mas não gostaria de voltar a utilizar uma versão menor. Seria o mesmo que voltar do XP para 98. :?

Tchauzin!

Que banco vc está usando?

Oi,

oracle

Tchauzin!

[quote=lina]Oi,

poisé… pelo artigo parece ser erro de jdk/jre mesmo…

Mas não gostaria de voltar a utilizar uma versão menor. Seria o mesmo que voltar do XP para 98. :?

Tchauzin![/quote]

Bem, acredito que não seja bug na máquina virtual não:

Dá uma olhadinha nos campos em Visualizar - Campos do Relatório - Campos se os tipos dos valores estão iguais os dos Text’s Field’s dos relatório.

[]'s
JL

Oi,

poisé… eu li eles falando que não é um bug. Porém em outros lugares existem muitas pessoal reclamando disso ao serializar este tipo de objeto.

Vou ver o que da para fazer… qualquer coisa aviso aqui…

Obrigada.
Tchauzin!

Oi,

Fiz testes com varios javas diferentes.

A partir da versão 6_10 ocorre essa exceção.

Ou seja, voltei a utilizar a versão 6_10

Tchauzin!