NoClassDefFoundError

3 respostas
R

Olá pessoal, esta parece fácil!

Estou com um erro que não consigo identificar ao executar uma aplicacao standard que criei no Netbeans 4.0 usando o SDK 1.5.0 .
No ambiente de desenvolvimento funciona OK.
Em produção, o programa roda bem até o momento de instanciar FTPClient.
Nesse momento dá o seguinte erro:
"Exception in thread "main" java.jang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClient at ..."
Estou rodando no prompt do DOS, dentro da pasta onde está o programa, assim: java -cp c:\commons-net-1.2.2.jar -jar meuteste.jar
Dentro de commons-net-1.2.2.jar existe a classe a ser instanciada.
O ambiente é windows xp (desenvolvimento e produção) com CLASSPATH = "."; .
Já experimentei colocar o commons-net-1.2.2.jar na pasta lib do java e também na pasta da aplicação mas ainda assim não funcionou.

O que está errado aqui?

Aqui o fonte do programa:
package meuteste;

import java.net.*;
import java.io.*;

import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPClient;

public class Main {
    public Main() {
    }
    public static void main(String[] args) {
        try {
            URL url = new URL("http://checkip.dyndns.org/");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestProperty("Request-Method","GET");
            con.setDoInput(true);
            con.setDoOutput(false);
            con.connect();
            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
            StringBuffer newData = new StringBuffer(150);
            String s = "";
            s = br.readLine();
            System.out.println (s.substring(76,90));
            FileWriter writer = new FileWriter("c:\ipe.txt");
            PrintWriter saida = new PrintWriter(writer);
            saida.println(s.substring(76,90));
            saida.close();
            writer.close(); 

            FTPClient ftp = new FTPClient(); // aqui está o problema

            ftp.connect("ftp.controlpoint.com.br");
            if( FTPReply.isPositiveCompletion( ftp.getReplyCode() ) ) {
                ftp.login( "xyz", "xyz" );
            }
            else {
                ftp.disconnect();
                System.out.println("Conexão recusada");     
                System.exit(1);
            };
            InputStream is = new FileInputStream( "c:\ipe.txt" );
            try {
                boolean rsp = false;
                rsp = ftp.changeWorkingDirectory("public_html");
            }
            catch (FTPConnectionClosedException e) {
                System.out.println("Deu pau");     
            };
            ftp.storeFile( "ipe.txt", is );
            ftp.disconnect();
        }
        catch ( Exception e) {
            System.out.println("Deu pau geral");    
            e.printStackTrace();
        }
    }
}

3 Respostas

danieldestro

Tenta assim:

java -cp .;./commons-net-1.2.2.jar -jar ./meuteste.jar

Senão certifique-se que o jar está no classpath.

R

Cara vou tentar fazer como sugeristes.

Mas acho que resolvi. Coloque1 o commnos-nte-1.2.2.jar na pasta lib\ext do jre1.5.0 e funcionou ok só entrando com java -jar meuteste.jar.

Obrigado pela resposta.

danieldestro

Isso quer dizer que o seu JAR não estava no classpath. Algo estava errado.

Criado 24 de novembro de 2004
Ultima resposta 24 de nov. de 2004
Respostas 3
Participantes 2