2012-04-15 4 views
1

Javaアプリケーションでファイルをダウンロードしたいときに試してみると、ハードドライブにファイルが作成されますが、完全にダウンロードできません。私はそれを行うにはftp4jライブラリを使用しています。Javaアプリケーションでftp4jライブラリをダウンロード/アップロードする際にFTPエラーが発生しました

import it.sauronsoftware.ftp4j.*; 
public class Main { 
public static void main (String args[]){ 
    FTPClient client = new FTPClient(); 
    try{ 
    client.connect("ftp.myaddress.comlu.com"); 
    client.login("username", "password"); 
    System.out.println("Connection created"); 
    client.download("public_html/ZScreen.png", new java.io.File("d:/xxx/ZScreen.png")); 
    System.out.println("Download successful"); 
    client.disconnect(true); 
    } 
    catch (Exception FTPException){ 
    System.out.println("Shit hit the fan"); 
    } 
} 
} 

いつもConnectionが作成され、Shitがファンにヒットしました。また、私のハードドライブに作成されたファイルがありますが、サイズは0バイトです。

これは、あなたがフォルダに書き込むための権限を持っていないスタックレース

Connection created 
java.net.SocketException: Connection reset 
Shit hit the fan 
at java.net.SocketInputStream.read(SocketInputStream.java:189) 
at java.net.SocketInputStream.read(SocketInputStream.java:121) 
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283) 
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325) 
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) 
at sun.nio.cs.StreamDecoder.read0(StreamDecoder.java:126) 
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:112) 
at java.io.InputStreamReader.read(InputStreamReader.java:168) 
at it.sauronsoftware.ftp4j.NVTASCIIReader.readLine(NVTASCIIReader.java:105) 
at  it.sauronsoftware.ftp4j.FTPCommunicationChannel.read(FTPCommunicationChannel.java:142) 
at it.sauronsoftware.ftp4j.FTPCommunicationChannel.readFTPReply(FTPCommunicationChannel.java:187) 
at it.sauronsoftware.ftp4j.FTPClient.openPassiveDataTransferChannel(FTPClient.java:3538) 
at it.sauronsoftware.ftp4j.FTPClient.openDataTransferChannel(FTPClient.java:3473) 
at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3302) 
at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3213) 
at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3078) 
at Main.main(Main.java:9) 
+0

スタックトレースを表示してください。 – Torious

+0

スタックトレースはありません。私は間違った例外タイプを挿入したかもしれません。 –

+0

'catch(Exception e){e.printStackTrace();を試してみてください。あなたが今、持っている 'catch'ブロックの代わりに'} 'を使用しています。 – Torious

答えて

1

です。レパートリーが「読み取り専用」状態でないかどうかを確認します。

+0

upvotingで私の投稿を編集します。ありがとうございます – nathj07

5

どうやらあなたの問題を説明するだろうIPv6のFTPの使用に関連Windows 7のファイアウォールバグがあります。バグレポートhereを参照してください。と

netsh advfirewall set global StatefulFtp disable

  • 実行JVM:

    • 実行して、Windowsコンソールで管理者として次

      のいずれかがはそれを修正するために十分なはず回避策オプション:-Djava.net.preferIPv4Stack=true

  • +1

    すごい!私はあなたがこれをどのように発見したか、非常に不思議ですありがとう! – skrebbel

    関連する問題