Dúvida - AutoBox Java5 - java.lang.VerifyError

Tentei fazer isso:

Double n = new Double(1);
Double m = new Double(2);
m = m - n;

Erro:

Exception in thread "main" java.lang.VerifyError: (class: TesteAutobox, method: main signature: ([Ljava/lang/String;)V) Expecting to find object/array on stack

Resolvi dessa forma:

Double n = new Double(1);
Double m = new Double(2);
m = m.doubleValue() - n.doubleValue();

Alguém sabe porque acontece isso?

Quando você executa java -version o que ele mostra?
Tentei reproduzir seu erro e não consegui. (pode ser que você esteja usando um beta, ou então que você esteja usando a versão errada)


C> java -version

java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

Estou utilizando o 5 update 1

java version "1.5.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_01-b08)
Java HotSpot(TM) Client VM (build 1.5.0_01-b08, mixed mode, sharing)

[quote=fabriciogiordani]Tentei fazer isso:

Double n = new Double(1);
Double m = new Double(2);
m = m - n;

Erro:

Exception in thread "main" java.lang.VerifyError: (class: TesteAutobox, method: main signature: ([Ljava/lang/String;)V) Expecting to find object/array on stack

Resolvi dessa forma:

Double n = new Double(1);
Double m = new Double(2);
m = m.doubleValue() - n.doubleValue();

Alguém sabe porque acontece isso?[/quote]

Engraçado… o AutoBox deveria funcionar normalmente…

Se estiver utilizando o Eclipse verifique se ele não está utilizando uma outra jdk…

Atn.
Dennys Fredericci
http://www.dennys.eti.br
Sun Certified Java Programmer

Estou tendo um problema que lança a mesma exceção que a sua.

Estou utilizando o java 1.5.0_04 e tentei com a 1.5.0_01.

O erro é o seguinte:

o método está implementado dessa maneira:

    protected void zag() {

        AbstractTree temp = left;
        left = right;
        right = left.right;
        left.right = left.left;
        left.left = temp;

        Object tempChave = key;
        key = left.key;
        left.key = tempChave;
    }

Esse código foi tirado do livro, e está identico a projetos já entregue ao professor, cujo trabalhos funcionaram. O problema do código é quando tento rodar a linha left.left = temp;

Quando comento dá certo.

Alguém pode explicar e/ou sugerir algo?