使用sun.net.ftp.FtpClient進行上傳功能開發,在jdk1.7上不適用問題的解決


問題如下圖片:

之前項目上開發了一個上傳文件的功能,使用的是sun.net.ftp.FtpClient這個類

連接服務器的代碼大概如下:

public static FtpClient ftpClient = null;

 ftpClient = new FtpClient();
 ftpClient.openServer(server);
 ftpClient.login(user, password);

之前這個功能是在jdk1.6基礎上進行開發的。使用一切正常。

但是因為客戶的環境上已經有了jdk1.7的環境,所以直接進行部署,發現文件上傳失敗,並且報如下錯誤:

cannont instantiate the type FtpClient

經過調查,發現

1) sun.net.ftp.FtpClient 這個類在jdk的幫助文檔中沒有具體的說明,也就是並沒有對外公開。並且這個類是在jdk的 rt.jar中實現的。

2)jdk1.7下其構造函數FtpClient()被定義為private類型,所以無法new了。 在jdk1.7,已經換成了 FtpClient.create(ip)方法

同時,其他的一些方法也基本都改掉了,

如 ftpClient.openServer(server);
  ftpClient.login(user, password);

就可以換成:ftpClient.login(user, null, password);   

  ftpClient.binary();  --->  ftpClient.setBinaryType();   

ftpClient.put(remotefilename);--->ftpClient.putFileStream(remotefilename, true);   

等。

 

如果這樣的話,解決這個問題有2個辦法:

1. 重寫這個上傳功能, 但是1.6版本怎么辦呢, 可能需要根據jdk版本進行分開處理

2. 在既存的服務器上,構築1.6的環境,然后 tomcat 啟動的時候,加載1.6的jdk

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM