Problema ao instanciar uma Classe

tenho um Midlet onde estou tentando instanciar uma classe que eu mesmo criei, a classe possui muitos atributos byte e 4 Strings, e varias operações, na maioria de soma e subtração

quando tento rodar aparece o seguinte erro no netBeans:

Error verifying method Character ([B)V
Approximate bytecode offset 28: Inconsistent or missing stackmap at target

se quiserem que eu poste a classe eu posto, só que ela é meio grande!

vou ser mais especifico, agora que fucei melhor: existe alguns metodos que ao serem comentados consigo instanciar minha classe, um dos metodos que não deixam eu instanciar minha classe é:

private void upHP() { if (level == 1) { hp = Classes.LIFE_DICE[classification]; } else { hp = (byte) (hp + Classes.LIFE_DICE[classification] ); } }

onde level, hp e classification são atributos privados da classe, todos do tipo byte
Classes é uma classe final com algumas constantes

se eu comento esse metodo a classe é instanciada na boa

Voce esta fazendo pre-verificacao nas classes antes de rodar?

parece que tenho muito o que aprender!
como faço pré-verificação?

Se vc está usando o WTK (Wireless Toolkit) basta vc clicar em “Build” que ele faz tudo pra vc.

Se vc está usando o javac mesmo, depois de compilar sua classe use o comando preverify que deverá ter alguns atributos que dependerá de como seu ambiente está configurado (Classpath, etc).

Vá na seção de artigos aqui do GUJ e dê uma olhada no artigo para iniciantes em J2ME. Se mesmo assim sua dúvida não for sanada, volte aki!

Um abraço!

ops, então, eu não estava usando o WTK, dai comecei a usar e descobri que não havia erros (pelo menos em alguns metodos) agora os metodos que estão dando erros são esses:

[code] public Character(byte[] arg) {
ByteArrayInputStream bStrm = new ByteArrayInputStream(arg);
StringBuffer sbAux = new StringBuffer();
byte bAux;

		bAux = (byte) bStrm.read();
		while (bAux != ';') {
			sbAux.append(bAux);
			bAux = (byte) bStrm.read();
		}
		name = sbAux.toString();
		sbAux.delete(0,sbAux.length()-1);

		bAux = (byte) bStrm.read();
		while (bAux != ';') {
			sbAux.append(bAux);
			bAux = (byte) bStrm.read();
		}
		player = sbAux.toString();
		sbAux.delete(0,sbAux.length()-1);

		bAux = (byte) bStrm.read();
		while (bAux != ';') {
			sbAux.append(bAux);
			bAux = (byte) bStrm.read();
		}
		eyes = sbAux.toString();
		sbAux.delete(0,sbAux.length()-1);

		bAux = (byte) bStrm.read();
		while (bAux != ';') {
			sbAux.append(bAux);
			bAux = (byte) bStrm.read();
		}
		hair = sbAux.toString();
		sbAux.delete(0,sbAux.length()-1);

		classification = (byte) bStrm.read();
		race = (byte) bStrm.read();
		alignment = (byte) bStrm.read();
		level = (byte) bStrm.read();
		size = (byte) bStrm.read();
		gender = (byte) bStrm.read();

		str = (byte) bStrm.read();
		dex = (byte) bStrm.read();
		con = (byte) bStrm.read();
		intelligence = (byte) bStrm.read();
		wis = (byte) bStrm.read();
		cha = (byte) bStrm.read();

		hp = (byte) bStrm.read();
		ac = (byte) bStrm.read();
		armorBonus = (byte) bStrm.read();
		miscAC = (byte) bStrm.read();

		miscInitiative = (byte) bStrm.read();

		xp = (byte) bStrm.read();


}[/code]

e este

[code] public byte[] getCharacter() {
byte[] returns = null;

	ByteArrayOutputStream bStrm = new ByteArrayOutputStream();

	try {
		bStrm.write(name.getBytes());
		bStrm.write(';');
		bStrm.write(player.getBytes());
		bStrm.write(';');
		bStrm.write(eyes.getBytes());
		bStrm.write(';');
		bStrm.write(hair.getBytes());
		bStrm.write(';');

		bStrm.write(classification);
		bStrm.write(race);
		bStrm.write(alignment);
		bStrm.write(level);
		bStrm.write(size);
		bStrm.write(gender);

		bStrm.write(str);
		bStrm.write(dex);
		bStrm.write(con);
		bStrm.write(intelligence);
		bStrm.write(wis);
		bStrm.write(cha);

		bStrm.write(hp);
		bStrm.write(ac);
		bStrm.write(armorBonus);
		bStrm.write(miscAC);

		bStrm.write(miscInitiative);

		bStrm.write(xp);

	} catch (IOException e) {

		e.printStackTrace();
	}

	returns = bStrm.toByteArray();

	return returns;
}[/code]

só pra ser mais especifico, essa classe representa um personagem de jogo de RPG (estou fazendo um programa pra celular que calcula a ficha sozinho) então fiz esses metodos, um exporta um array de bytes pra poder salvar num recordstore e o outro constroi a partir de um array de bytes.

não sei se o metodo é o correto, usei apenas a teoria que li e minha logica

Mas, afinal, vc esta fazendo a pre-verificacao? :smiley:

agora estou sim, não estava usando o WTK

mas agora usando o WTK sim, e ele faz pré verificação!

só gostaria de saber se esses dois metodos estão feitos corretamente, se existe alguma coisa que não funciona em midlet!

O erro esta na compilacao ou na execucao? Alias, qual o erro que esses dois metodos apresentam? O mesmo da primeira msg?

[code]Project "RPG" loaded

Project settings saved

Building "RPG"

Build complete

Running with storage root DefaultColorPhone

Unable to create MIDlet PrimeiroMidlet

java.lang.NullPointerException

at Character.getCharacter(+32)

at PrimeiroMidlet.<init>(+67)

at java.lang.Class.runCustomCode(+0)

at com.sun.midp.midlet.MIDletState.createMIDlet(+19)

at com.sun.midp.midlet.Selector.run(+22)

Unable to create MIDlet PrimeiroMidlet

java.lang.NullPointerException

at Character.getCharacter(+32)

at PrimeiroMidlet.<init>(+67)

at java.lang.Class.runCustomCode(+0)

at com.sun.midp.midlet.MIDletState.createMIDlet(+19)

at com.sun.midp.midlet.Selector.run(+22)

[/code]

dei uma fuçada melhor

agora é quando aciono o metodo getCharacter que ele da um nullPointerException