Anwendung friert bei .listNames() ein!

jf

Bekanntes Mitglied
Und wieder habe ich ein Problem... :(

Ich möchte von einem ftp-Server Dateien laden.
Dafür verwende ich folgenden Quelltext:
Java:
package ftp;


import java.io.FileNotFoundException;
import java.io.IOException;

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


public class FTP {

    private static FTPClient ftp = new FTPClient();
         
        try {
            ftp.connect("...");
            System.out.print(ftp.getReplyString());
            ftp.login("...", "...");
            System.out.print(ftp.getReplyString());
            
            if(!FTPReply.isPositiveCompletion( ftp.getReplyCode() )) {
                ftp.disconnect();
                System.out.println("MIST!");
                return;
            }
            
            String[] names = ftp.listNames();

            if(names.length > 0) {
                System.out.println(names[0]);
            }
            
            ftp.logout();
        } catch (FileNotFoundException e) {
            System.out.println("File not found!");
        } catch (IOException e) {
            System.out.println("IOException while trying to download from ftp server!");
        } finally {
            try {
                ftp.disconnect();
            } catch(IOException ioe) {
                // do nothing
            }
        }
    }
}

Das Einloggen müsste funktioniert haben, wie folgende Ausgabe auf der Konsole zeigt:
Code:
220 ProFTPD 1.3.1 Server (ProFTPD) [...]
230 User ... logged in

Bei
Java:
String[] names = ftp.listNames();
friert meine Anwendung allerdings komplett ein.
Was mache ich falsch??? ;(
 
Zuletzt bearbeitet:
G

gman

Gast
Hi,

da wir den Code von FTPClient nicht kennen, können wir dir wohl nicht weiterhelfen :-(
In der Methode "listNames()" der Klasse "FTPClient" scheint dein Programm ja stecken
zu bleiben.

EDIT: UPS! Sehe gerade das der Client aus einem Apache-Paket kommt, sorry! Dann
besorg dir vielleicht die Quellen des Pakets, binde sie in deine IDE ein und debugge
mal.
 

jf

Bekanntes Mitglied
da wir den Code von FTPClient nicht kennen, können wir dir wohl nicht weiterhelfen :-(
In der Methode "listNames()" der Klasse "FTPClient" scheint dein Programm ja stecken
zu bleiben.
Ich habe also in der Anwendung nichts falsch gemacht?

EDIT: UPS! Sehe gerade das der Client aus einem Apache-Paket kommt, sorry! Dann
besorg dir vielleicht die Quellen des Pakets, binde sie in deine IDE ein und debugge
mal.
Kann es denn wirklich sein, dass in einer Apache-Bibliothek solch ein schwerwiegender Fehler steckte?
Da Problem müsste doch auch bei anderen Anwendern bereits aufgetreten sein.

Gibt es Alternativen, welche zu empfehlen sind?
 
G

gman

Gast
Es muss jetzt nicht heissen das in der Lib von Apache der Fehler drin steckt. Aber auf jeden Fall
hängt deine Anwendung irgendwo in dem Code von Apache. Daher auch der Tipp für das
Debugging.
Schau dir vielleicht noch mal ein paar Beispiele für die Verwendung der Lib und deren Dokumentation
an, vielleicht haste noch was übersehen.
 

jf

Bekanntes Mitglied
Schau dir vielleicht noch mal ein paar Beispiele für die Verwendung der Lib und deren Dokumentation an, vielleicht haste noch was übersehen.
Ja, danach habe ich als allererstes gesucht - aber nur andere Beispiele gefunden (speichern von Dateien im ftp-Verzeichnis usw.)
Daher habe ich mich vertrauensvoll an dieses Forum gewandt, in der Hoffnung, dass hier jemand einen schnellen Tipp parat hat. :)
 

HoaX

Top Contributor
Ich vermute einfach mal dass du mal den Passive-Mode aktivieren sollst. So wie es gerade ist, versucht nämlich der Server eine TCP-Verbindung zu deinem Rechner aufzubauen. Sobald du eine Firewall laufen hast oder hinter einem Router sitzt, der das nicht unterstützt, passiert wie du schon gemerkt hast: nichts.
 

jf

Bekanntes Mitglied
API-Doc zu FTPClient öffnen und nach "passive" suchen?
Ich war gestern nur über Handy im Netz, was die Suche etwas erschwerte...

Nein, ich mach das jetzt nicht für dich.
Tut mir leid, ich dachte, du wüsstest gleich aus dem Kopf was zu machen ist. :)

Also, ich habe jetzt folgende zwei Methoden gefunden:

Code:
 void 	enterLocalPassiveMode()
          Set the current data connection mode to PASSIVE_LOCAL_DATA_CONNECTION_MODE .
Code:
 boolean 	enterRemotePassiveMode()
          Set the current data connection mode to  PASSIVE_REMOTE_DATA_CONNECTION_MODE .

Welche von beiden soll ich nehmen?
Muss ich diese einfach kurz nach dem Einloggen ausführen und das wars?
 

jf

Bekanntes Mitglied
Also, ich habe jetzt folgende zwei Methoden gefunden:
Ich habe es nun mit
Code:
ftp.enterLocalPassiveMode();
probiert und
Code:
ftp.listNames();
lieferte mir sofort alle Dateinamen - ein einfacher Aufruf hat also genügt. :)

Übrigens: die Verwendung von
Code:
enterRemotePassiveMode();
führte zu einer Nullpointer-Exception.

Gruß, jf

Edit: Problem hat sich erledigt. :D
 
Zuletzt bearbeitet:
S

SlaterB

Gast
teste

FileOutputStream out = ..;
ftp.retrieveFile("file.txt", out);
out.flush();
out.close();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Socket-Anwendung (BufferedWriter/Reader liest nicht aktuellen Wert) Netzwerkprogrammierung 6
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
B Webview für Anwendung Netzwerkprogrammierung 7
agent47 HTTP Grundstzfrage verteilte Anwendung Netzwerkprogrammierung 20
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
S HTTP Würdet Ihr Euch bei einer intern genutzten Anwendung auf Cookies verlassen? Netzwerkprogrammierung 2
gamebreiti Socket Server / Client Anwendung Manipulation von Objekten durch Server Netzwerkprogrammierung 9
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
P Kritische Java-Anwendung und Citrix veröffentlichen Netzwerkprogrammierung 1
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
S Client Anwendung mit zentraler SQL-Datenbank Netzwerkprogrammierung 3
C GWTEventService kleine Anwendung Netzwerkprogrammierung 1
T Peer-to-Peer Anwendung Netzwerkprogrammierung 2
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
P Java Web = Webside Anwendung Netzwerkprogrammierung 2
Ollek Socket Sucher passende Server/Client Lösung für meine Anwendung Netzwerkprogrammierung 2
S Socket Einfache Client/Server-Anwendung Netzwerkprogrammierung 11
Y einfache TCP/IP Anwendung Netzwerkprogrammierung 4
J Nachricht kommt erst nach beendigung der Anwendung an Netzwerkprogrammierung 4
K Mobile online Anwendung - Java mit SAP Netzwerkprogrammierung 2
W Server-Client Anwendung Netzwerkprogrammierung 2
E Erste Server-Client Anwendung Netzwerkprogrammierung 2
P Proxy für Anwendung setzten Netzwerkprogrammierung 3
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
J Mit Java Anwendung ein (externes) Programm auf einem AIX Rechner starten Netzwerkprogrammierung 6
P Mp3s Streamen - Client-Server-Anwendung Netzwerkprogrammierung 17
D Javascript Funktion aus Java Anwendung ausführen Netzwerkprogrammierung 5
M Verteilte Anwendung - welche Technik? Netzwerkprogrammierung 31
I RMI Anwendung mit Zugriffsschutz versehen Netzwerkprogrammierung 8
A Verständnisproblem mit Client/Server-Anwendung Netzwerkprogrammierung 20
S Server - Client Anwendung Netzwerkprogrammierung 3
K RMI macht Anwendung langsam? Netzwerkprogrammierung 8
G Performance einer verteilten RMI-Anwendung Netzwerkprogrammierung 4
R proxy für java anwendung angeben [resolved] Netzwerkprogrammierung 15
R GUI friert bei UDP ein Netzwerkprogrammierung 7
V GUI friert ein Netzwerkprogrammierung 6
D FTP ListNames() funktinoniert nicht richtig Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben