2012-05-04 24 views
1

我有一個簡單的GUI程序,與數據庫進行一些交互,然後一旦它完成了一些文件的ftps服務器。直到我添加了一個SwingWorker線程來保持GUI響應,這一直很好地工作。Java FTP不能在SwingWorker內部工作線程

我使用的作品很好,如果我把它放在了獨立的項目,但這個項目(SwingWorker的線程)裏面它給了我下面的錯誤代碼:

java.net.SocketException: Software caused connection abort: recv failed 

at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(Unknown Source) 
at java.net.SocketInputStream.read(Unknown Source) 
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) 
at sun.nio.cs.StreamDecoder.implRead(Unknown Source) 
at sun.nio.cs.StreamDecoder.read(Unknown Source) 
at sun.nio.cs.StreamDecoder.read0(Unknown Source) 
at sun.nio.cs.StreamDecoder.read(Unknown Source) 
at java.io.InputStreamReader.read(Unknown Source) 
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.openActiveDataTransferChannel(FTPClient.java:3511) 
at it.sauronsoftware.ftp4j.FTPClient.openDataTransferChannel(FTPClient.java:3475) 
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2641) 
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2550) 
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2421) 
at GUI$MatchFiles.doInBackground(GUI.java:1602) 
at GUI$MatchFiles.doInBackground(GUI.java:1) 
at javax.swing.SwingWorker$1.call(Unknown Source) 
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at javax.swing.SwingWorker.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

任何想法?編輯: 我認爲你的意思是這樣的嗎?請注意,這是一個非常精簡的版本,我刪除了很多多餘的代碼。我不能看到任何影響這一點。

class Worker extends SwingWorker<Integer, Integer>{ 
    protected Integer doInBackground() throws Exception{ 
     FTPClient client = new FTPClient(); 
     client.connect(url); 
     client.login(username, password); 
     client.setPassive(false); 
     client.changeDirectory(uploaddirectory); 
     client.upload(new File(fileuploadpath)); 
     client.disconnect(true); 
    } 

    protected void done() {     
     System.out.println("Done");     
    } 
} 

至於說,我借這個代碼的SwingWorker裏面,把它放在自己的類,它運行完美。

+0

請發表[SSCCE](HTTP ://sscce.org/)說明了這個問題。 – tenorsax

+0

我添加了一個代碼示例來顯示我在做什麼。 – user1374211

回答

0

它看起來像你的插座被切斷你的防火牆或防病毒...嘗試禁用防火牆和防病毒軟件並重新運行您的程序......