Java.lang.NoClassDefFoundError

7 respostas
F

Senhores,

Preciso de ajuda
Estou com o erro:


java.lang.NoClassDefFoundError

que acontece nessa linha do codigo:

MetricaJavaBean voAux = new MetricaJavaBean();

Pelo que eu andei pesquisando esse erro acontece porque não conseguiu localizar a classe MatricaJavaBean.
A pergunta é a seguinte, se eu pressionar CTRL+ESPAÇO e aparecer a classe é porque na teoria foi possível localiza-la.

Se isso for correto, porque está ocorrendo esse erro?

Valeu

7 Respostas

LPJava

bom, sua class deve está no mesmo local que seu arquivo prinicipal ta chamando ela.
eu nao posso ter uma classe em outro diretorio e ta chamando em outro… assim ele dar q a classe que vc ta chamando nao foi encontrado no diretorio que o chama. se vc puder colocar a sintaxe ai completa… seria uma boa IDEIA. :lol:
Mas pelo pouco conhecimento que tenho, vc ta chamando uma class que n está no mesmo pacote do chamador…

Jair_Rillo_Junior

Ela está em outro pacote? se sim, vc tem que importar ela usando o comando import.
Também verifica o classpath

F

Exatamente senhores…

Já adicionei o .jar no projeto e também já utilizei o import, veja:

import com.empresa.ra.lib.vo.MetricaJavaBean;

Um detalhe, se eu pressionar CTRL+ESPAÇO e aparecer a classe que estou precisando, isso quer dizer que a classe já está no meu projeto, certo?
Se sim, não deveria estar apresentando esse erro.

F

Alguem poderia me ajudar?

srolbh

Voce está conseguindo rodar seu programa a partir da IDE e ele só não roda a partir do prompt de comando, certo?

Se este for o caso, pode ser que a classe MetricaJavaBean não esteja na pasta com/empresa/ra/lib/vo/, que é onde o arquivo será procurado (.JAR ou .CLASS).

EX, na classe que será instanciada fica o nome do package tipo “package com.empresa.ra.lib.vo;” e na classe que irá instanciar a outra ficará “import com/empresa/ra/lib/vo.*;”, sendo que a classe a ser chamada tera que ficar na pasta “vo/”

Eu tive esse mesmo problema, que foi resolvido após a execução dos passos acima.

F

Nem a partir do eclipse não está rodando…
Quando estou no debug e vai tentar instanciar a classe ocorre o erro.

Segue o codigo completo:

public ArrayList getMetricaDataCon(
			String[] metricaList, 
			Date dataIni, 
			Date dataFin) throws TechnicalException{
		
		ArrayList retorno = new ArrayList();
		MetricaVo[] metricaRetorno = null;
		TreeMap metricaMap = new TreeMap();

		SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
		
		Date tempDate = dataIni;
		GregorianCalendar cal = new GregorianCalendar();

		for (int i=0; i<metricaList.length;i++)
		{
		
			DaoFactory df = DaoFactory.getDaoFactory(DaoFactory.DATASOURCE);
		
			try{
				//criando daos de acesso
				IdDadosDao idDadosdao = df.getIdDadosDao(new String[]{});
				IdMetricasDao idMetricasDao = df.getIdMetricasDao(new String[]{});
			
				String[] ids = null;
				//pesquisa os IDs da métrica
				 ids = idMetricasDao.getMetricaIds(metricaList[i]);
				 
			
				 //pesquisa os valores dos IDs em um período
				 IndicadorVo[] idLista = 
					 idDadosdao.getIdMetricaData(dataIni, dataFin, ids);
			
				 for (int y = 0; y >&lt idLista.length; y++) {
					 String strDate = idLista[y].getPeriodo();
					 cal.set(Integer.parseInt(strDate.substring(0, 4)), 
							 	Integer.parseInt(strDate.substring(4, 6)) - 1, 
								Integer.parseInt(strDate.substring(6, 8)));
					MetricaVo vo = (MetricaVo)metricaMap.get(cal.getTime());
					if (vo == null){
						 vo = idMetricasDao.getMetrica(metricaList[i]);
					}

					 double tempValor = 0;
					 if (Double.isNaN(vo.getIdValor(idLista[y].getId()))){
						 tempValor = idLista[y].getValor();
					 } else {
						 tempValor = idLista[y].getValor() + vo.getIdValor(idLista[y].getId());
					 }
					 vo.setPeriodo(formatter.format(cal.getTime()));
					 vo.putIdValor(idLista[y].getId(), tempValor);
					 metricaMap.put(cal.getTime(), vo);
					 
				 }
				 
				 Iterator it = metricaMap.entrySet().iterator();
				[b] MetricaJavaBean voAux = new MetricaJavaBean();[/b]
				 while (it.hasNext()){
					 Entry entry = (Entry)it.next();
					 retorno.add((MetricaVo)entry.getValue());
					 MetricaVo vo1 = ((MetricaVo)entry.getValue());
					 voAux.setMetrica(metricaList[i]);
					 voAux.setPeriodo(vo1.getPeriodo());
					 voAux.putPeriodoValor(vo1.getPeriodo(),vo1.getMetricaValue()); 
				 }
				 metricaMap = new TreeMap();

			} catch (DaoException daoEx){
				throw new TechnicalException("Ocorreu uma exceção ao acessar o banco de dados: ", daoEx);
			}
			
		}

O erro ocorre aonde está em negrito. (ou deveria estar em negrito)

O mais engraçado, é que no mesmo .jar externo eu utilizo a classe IndicadorVo, e ela funciona e essa nova classe que eu criei não está funcionando…

F

Nossa…

Pelo jeito minha situação é complicada…
Porque ninguem respondeu.

Então vou tentar fazer outra coisa…

Valeu,

Fabiano

Criado 17 de novembro de 2006
Ultima resposta 22 de nov. de 2006
Respostas 7
Participantes 4