NoClassDefFoundError

7 respostas
robinsonbsilva

Senhores(ritas)!!

Tenho uma classe criada no seguinte package(abaixo):
E ao tentar executar não vai…dá o erro acima!
Já entrei no diretório, e executei com o seguinte comando

package br.com.undertaker.model.utils;

public class Teste {

	public static void main(String[] args) {
		System.out.println(getDouble("114,74"));
	}

    public static double getDouble(String str) {
        try {
            java.text.DecimalFormat df = new java.text.DecimalFormat("#,##0.00;-#,##0.00");
            java.text.DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
            df.setDecimalFormatSymbols(dfs);
            return ((double)Math.round(df.parse(str).doubleValue() * 100)) / 100;
        } catch(Exception e) {
            e.printStackTrace();
            return 0.0;
        }
    }
}

// acessando o diretório 
java public_html/WEB-INF/classes/br/com/undertaker/model/utils Teste 
// de dentro do diretório
java Teste 
// especificando o caminho
java br.com.undertaker.model.utils.Teste

Alguém me ajude!

7 Respostas

rubensdemelo

Tem o jdk? Compilou?

Aqui rodei sem erro e a saída foi: 114.74

emmanuelrock

Robinson, umas das possibilidades é o nome do arquivo .java ser diferente do nome da sua classe. Abraço…

robinsonbsilva

Então…a classe está compilada sim!

Então, preciso rodar esse teste, pois estou tendo um problema para converter String para double.
Essa classe está em um Server na locaweb e quando executo tal método o valor saí errado…exemplo:

Entrada -> 94,45 saí -> 9445.00

Desde já agradeço!

B

Já tentou instanciar o DecimalFormat usando um Locale pt_BR ao invés de setar os símbolos na mão?

edmarr

Aqui funfou normal , a unica explicacao poderia ser como esta as suas opções regionais

seu codigo .
public class TesteDouble {

	public static void main(String[] args) {
		System.out.println(getDouble("94,50"));
	}

    public static double getDouble(String str) {
        try {
            java.text.DecimalFormat df = new java.text.DecimalFormat("#,##0.00;-#,##0.00");
            java.text.DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
            df.setDecimalFormatSymbols(dfs);
            return ((double)Math.round(df.parse(str).doubleValue() * 100)) / 100;
        } catch(Exception e) {
            e.printStackTrace();
            return 0.0;
        }
    }
}

a saida foi

94.5
robinsonbsilva

Bom dia,

O problema foi resolvido apenas informando o separados decimal.

dfs.setDecimalSeparator(',');
public static double getDouble(String value) {
        try {
            java.text.DecimalFormat df = new java.text.DecimalFormat("#,##0.00;-#,##0.00");
            java.text.DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
            dfs.setDecimalSeparator(','); //RESOLVEU O PROBLEMA
            df.setDecimalFormatSymbols(dfs);
            return ((double)Math.round(df.parse(value).doubleValue() * 100)) / 100;
        } catch(Exception e) {
            e.printStackTrace();
            return 0.0;
        }
    }
edmarr

Com certeza era as suas configurações regionais msm .

Criado 3 de setembro de 2009
Ultima resposta 3 de set. de 2009
Respostas 7
Participantes 5