2015-09-01 93 views
-1

我寫了一個連接到FTP服務器的java程序,並顯示服務器上當前工作目錄的內容列表。代碼如下:連接到FTP(java)時GUI崩潰

 public static void connect(){ 

     ftp = new FTPClient(); 
     FTPClientConfig config = new FTPClientConfig(); 
     ftp.configure(config); 
     boolean error = false; 

    try { 
      ftp.connect(ftpConnect); 
      ftp.enterLocalPassiveMode(); 
      ftp.login(ftpUsername, ftpPassword); 
      System.out.println("Connected to " + ftpConnect); 
      System.out.println("Server Reply Code: "+ftp.getReplyString()); 
      getFileData(); 
      ftp.disconnect(); 

    } catch(IOException e) { 
      error = true; 
      e.printStackTrace(); 
     } finally { 
      if(ftp.isConnected()) { 
      try { 
       ftp.disconnect(); 
      } catch(IOException ioe) { 
       // do nothing 
      } 
      } 
      System.exit(error ? 1 : 0); 
     } 
    } 

    public static void getFileData(){ 
     try { 
      fileFTP = ftp.listNames(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }  
    } 

    public static void downloadFTPFile(final String source, String newFileName) { 
     File checker = new File(source); 
     if(checker.exists()){ 
      System.out.println("File \" "+source+"\" already exists. Canceling donwload..."); 
      System.exit(1); 

     } else {   
      try (FileOutputStream fos = new FileOutputStream(newFileName)) {  
       System.out.println("Downloading "+source+". This might take a while..."); 
       System.out.println("Go make yourself a cup of coffee. Or two..."); 


       ftp.retrieveFile(source, fos); 
       System.out.println("Done!"); 

      } catch (IOException e) { 
       e.printStackTrace(); 
       }  
      } 
     } 

    public static void main(String[] args) throws IOException{ 
     connect(); 

    } 

} 

我得到了打印在我的揮杆GUI所有SYSOUT行動,以一個TextArea重定向類。但是,當我在GUI中啓動FTP連接時,GUI本身消失,就像它崩潰一樣,但在我的控制檯上,所有輸出都正確顯示,但不在重定向上。通過GUI,我還可以調用其他函數,如解壓縮程序,並且對於其他所有函數,GUI的工作狀態都很好,並在我的textArea中顯示所有SysOut的東西。這是FTPClient的東西之間的某種不兼容?

歡呼

+0

通過命令行運行GUI,看看它是否會引發某種異常的在那裏 – nafas

+0

我只是 - 我得到「包org.apache.commons.net.ftp不存在 」不過這是不準確的,因爲我導入了org.apache.commons.net jar i nto我的項目並將其綁定到我的構建路徑上。它也可以在控制檯輸出中使用!只是不在系統重定向... –

+0

你可以添加如何重定向你的系統? – Garry

回答

1

以此爲長註釋不是一個完整的答案:

試着去相信的例外是你的朋友不是敵人,它幾乎可以肯定你作出錯誤不是編譯器:)。

  1. 您是否在沒有GUI的控制檯上運行程序?如果是的話追查你使用什麼包(有時是不同版本的軟件包可能會破壞你的程序。

  2. 打開相關的.jar文件,並確保它肯定包含org.apache.commons.net.ftp的。

  3. 退房的.jar 。文件版本

+0

1:我編譯並通過終端運行程序,這就是錯誤來自; 2:org.apache.commons.net.ftp確實在我添加到構建路徑的.jar文件中; 3:我擁有的jar是3.3版本... –

+0

@SpadeJohnsson是否檢查過您沒有任何其他版本的軟件包?例如版本3.2 ... – nafas

+0

是的,我做了,沒有,只有1個版本.. –