problem z commons

0

hej,
musze zrobic polaczenie ftp. sciagnelam sobie biblio commons (z oficjalnej strony), w wersji commons-net-1.4.1.jar,
plik umiescilam we wlasciwej sciezce (/jre/lib/ext). uzywam neatbens. dodalam commons'a i jako biblioteke i jako jara.
jednak przy probie stworzenia obiekty typu FTPClient, czyli:

FTPClient klient = new FTPClient();

dostaje blad ze cannot find symbol (tyczy sie to FTPClient).

czy ktos z Was wie moze co jest nie tak lub czego mi jeszcze brakuje?

pzdr,
misty

0

juz sobie poradzilam, nie zrobilam importu.. ;)

pzdr!

0

Błąd pojawia się przy kompilacji czy przy uruchamianiu ? Na wszelki wypadek skopiuj jara do dwóch katalogów: jre/lib/ext oraz jdk/jre/lib/ext. Sam niedawno instalowałem ten pakiet, będziesz jeszcze potrzebować pakietu jakarta-oro-2.0.8.jar. Ja mam te pakiety tylko w jre/lib/ext, ale kompilowałem "z ręki"
(bez IDE) i wspomniany katalog jest wymieniony w CLASSPATH.
pozdrawiam

0

jak pisalam wyzej-to byla moja nieuwaga, nie importowalam biblioteki.

korzystajac jednak z okazji, ze zaczelam temat, mam do Was nastepujace pytanie:
jak najlepiej zorganizowac sobie klase odpowiedzialna za polaczenie z ftp i sciagniecie pliku. nie chce smiecic ani pisac czegos tak jak sie nie powinno.
wiec tak, mam klase FTPCon - w niej bede sie laczyc i sciagac plik. pytanie moze glupie, ale jako osoba poczatkujaca mam spore braki. czy mozna (powinno sie?/nie powinno?) zrobic polaczenie w konstruktorze?
tzn niech przykladowo klasa wyglada tak:

 public class FTPCon { 
 
 public FTPCon { 
 //tu w konstruktorze lacze sie z FTP 
 pobierz_plik(); 
 // po pobraniu pliku rozlaczam sie 
 } 
 
 public void pobierz_plik() 
 { 
 //pobieram i zapisuje na dysku plik pobrany z ftp 
 } 
 }

czy taka konstrukcja nie jest wadliwa? czy moze powinnam w klasie FTPCon napisac osobne metody do polaczenia sie i do rozlaczenia i na przyklad wywolac je w konstruktorze?
czy w ogole lepiej za wiele waznych operacji w konstruktorze nie robic?

0

Przeczytałaś dokładnie mój post ? Masz pakiet jakarta-oro-2.0.8.jar ? Kompilator tego pakietu nie potrzebuje. Jego brak objawi się błędem podczas ściągania.
Organizacja zależy mocno od tego co ma program robić:

  • łączyć się i ściągać jeden plik, którego nazwa jest z góry znana
  • łączyć się, wyświetlać zawartość katalogów i pozwalać użytkownikowi na ściągnięcie wybranego pliku [plików] [katalogu].
0

juz sciagam tego jara, sorki nieuwaznie przeczytalam Twojego posta. dzieki ze mi jeszcze raz zwrociles uwage!
co do tego jak to bedzie dzialac - to zadanie tej klasy to bedzie polaczyc sie z ftp, zapisac plik na dysku i rozlaczyc sie. bez zadnej interakcji uzytkownika.
czyli pierwszy wariant ktory wymieniles

0

Ja bym w ogóle nie tworzył nowej klasy do ściągania. W głównej klasie programu umieściłbym metodę

private boolean pobierz(...)
{
     FTPClient f=new FTPClient();
     boolean ok=false;
     try
     {
         f.connect(...);
         f.login(...);
         f.changeWorkongDiectory(...) ;
         FileOutputStream out=new FileOutputStream(...);
         f.retrieveFile(...,out);
         out.close();
     }
     catch(Exception e)
     {
         ....
     }
     finally
     {
         if(f.isConnected())
         {
             f.disconnect(); 
         }     
     } 
     return ok;
}

i wszystkie potrzebne metodzie pobierz informacje (serwer,port,login,password,katalog,nazwy plików) przekazywałbym jako argumenty

0

co to sa za funkcje:

 f.changeWorkongDiectory(...) ;
         FileOutputStream out=new FileOutputStream(...);
         
f.retrieveFile(...,out);

?

0

literówka się wkradła

f.changeWorkingDiectory(...) ; // zmienia katalog na serwerze
FileOutputStream out=new FileOutputStream(nazwa_pliku_lokalnego);
f.retrieveFile(,,,.out); // pobiera plik z serwera i zapisuje pod podaną wyżej nazwą 

korzystasz z klasy FTPClient() i nie zajrzałaś do jej dokumentacji ? [!!!]

0

no jeszcze nie korzystam, poki co-zbieram informacje;)
a tak serio to masz racje, juz tam patrze.
testowalam sobie tylko to co mi napisales wczesniej. zauwazylam jedna dziwna rzecz-mianowicie przerobilam sobie ciut przyklad na try-catch:

  try   {
  
  klient.connect("adres");
 
  System.out.println("Polaczono z FTP!");
  
    // logujemy sie
        try{
        
 klient.login(FTPUser, FTPPassword);       
        System.out.println("Zalogowano do FTP!");
        }
        
        catch(Exception exc_FTP_login) {
        
            System.out.println("Cannot log into FTP.. "+exc_FTP_login);
        }
  
  }
  
  
  catch(Exception exc_conFTP)   {
  
      System.out.println("Cannot connect to FTP.. "+exc_conFTP);
  }
  
  
    }


co jednak dziwne, loguje mi sie z ftp caly czas, tzn nawet jak podam zle haslo, to otrzymam status ze zalogowano.. czemu to tak? jak sie lacze np przez www to nie przejdzie mi ze zlym haslem..

1 użytkowników online, w tym zalogowanych: 0, gości: 1