Erro!

Bem, estava outro dia trabalhando, quando, de repente, caiu a energia aqui.
Quando voltou, abri o eclipse e o mesmo pediu para compilar todas as classes.
Depois que foi compilado, executei para o mesmo fazer run packing (Jboss) e coloquei o ear dentro do Jboss…
Qndo entrei em uma página este me retornou este erro em anexo.

Para resolver eu recompilei as classes, mas alguém teria alguma explicação para o erro?
Eu procurei na net e a única coisa que encontrei foi que, se fosse feito FTP de um class no modo binário ele retornaria este erro
[editado]
Esqueci de falar o erro (pensei que a img ficaria disponivel para visualizaçao, desculpem)

O erro foi o Bad Magic Number.
No começo achei até engraçado, “numero mágico mal”, hehehehehe

flw
[/editado]


A traducao na verdade eh “numero magico ruim”, o que faz um pouco mais de sentido :slight_smile:

Provavelmente ainda tem algum arquivo estourado na sua hd (bem-feito, quem mandou usar windows). Tente fazer backup de tudo que precisar e reinstalar o JBoss…

Eu consegui solucinar o problema, apenas recompilei todas as classes de novo ^^
Mas eu queria saber se existiria algum motivo para isto ocorrer, exceto aquele que descrevi acima.
Eu sei que está meio vago, mas as vezes alguém já passou pelo mesmo problema, hehehehe
valeu!

Olá

Este erro indica arquivo .class corrompido (ou estourado como disse o CV). Você agiu certo recompilando tudo. Mas se a classe corrompida fosse do JBoss ou de outros sistema Java qualquer como até mesmo o j2sdk, só a reinstalação resolveria.

O chamado número mágico é o hexadecimal CAFEBABE que é usado pelo ClassLoader para verificar se o arquivo é realmente uma classe Java. Na verdade são os 4 primeiros bytes de qualquer classe Java. É uma identificação como o 4D 5A (MZ) de qualquer arquivo .exe.

Se você usar um programinha como o Hexdump32 vai ver os 16 primeiros bytes assim:

00000000  CA FE BA BE 00 00 00 2E-00 2A 0A 00 0A 00 15 09

Só os 4 primeiros bytes são sempre iguais. Por exemplo o 2E mostra a versão do jsdk em que a classe foi compilada.

[]s
Luca

De modo geral:
a) Sempre que possível, use modo binário para copiar coisas entre o Windows e o Unix.
O único caso em que se deve usar o modo texto é quando você vai copiar um fonte .java do Windows para o Unix, e olhe lá. Se meu editor de programas me permite gravar os arquivos em formato Unix (’\n’ no final de cada linha, em vez de usar ‘\r\n’ que é o caso do Windows), então deixo tudo em formato Unix, que normalmente os programas do Windows (exceto o Notepad, que é burro mesmo) aceitam sem problemas arquivos no formato Unix.)
b) Se você é paranóico mesmo, use o sshd (no Unix) e o scp (no Windows) para efetuar cópias de arquivos. Nada de usar o FTP - ele passa as senhas em claro, e o cliente FTP do Windows, seguindo a especificação, usa como default o modo texto - já tive de fazer uma visita a um cliente porque um colega nosso copiou um arquivo (applet) em modo texto sem querer, e aí o applet até carregava, mas se comportava como se não tivesse sido assinado - erro muito esquisito - achava que o applet fosse explodir o browser, mas em vez disso rodava até certo ponto…
SCP copia os arquivos de modo cifrado e com verificação de integridade. Se o scp não conseguiu copiar o arquivo, é porque não deu mesmo.