使用sun.net.ftp.FtpClient进行上传功能开发,在jdk1.7上不适用问题的解决
来源:互联网 发布:袁姗姗演讲谈网络暴力 编辑:程序博客网 时间:2024/05/17 06:31
之前项目上开发了一个上传文件的功能,使用的是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。
这个在linux或者windows上都非常方便。 如果windowss上,tomcat是以服务形式启动的话,直接修改,关联的java 虚拟机源就可以了。
- 使用sun.net.ftp.FtpClient进行上传功能开发,在jdk1.7上不适用问题的解决
- 使用sun.net.ftp.FtpClient进行上传功能开发,在jdk1.7上不适用问题的解决
- JDK1.7 sun.net.ftp.FtpClient
- 在web下的 sun.net.ftp.FtpClient 的ftp上传与下载
- 开发FTP不要使用sun.net.ftp.ftpClient
- sun.net.ftp.FtpClient下载、上传文件
- sun.net.ftp.FtpClient的函数说明
- sun.net.ftp.FtpClient的函数说明
- sun.net.ftp.FtpClient的函数说明
- sun.net.ftp.FtpClient的函数说明
- sun.net.ftp.FtpClient的函数说明
- 使用Sun的FtpClient做FTP上传下载
- sun.net.ftp.FtpClient 操作FTP服务器上的文件和目录
- sun.net.ftp.FtpClient 操作FTP服务器上的文件和目录
- sun.net.ftp.FtpClient介绍
- [Java]简单的FTP客户端 sun.net.ftp.FtpClient
- 简单的FTP客户端 sun.net.ftp.FtpClient
- 将jre限制不能用的包启用方法。 sun.net.ftp.FtpClient
- 音频编码标准发展现状及发展趋势
- centos防火墙基本管理
- 敏捷开发中编写高质量Java代码
- 我的应用程序崩溃,现在怎么办? - 第1部分
- 苏宁易购山寨版 JavaWeb项目,源码我奉献了吧!
- 使用sun.net.ftp.FtpClient进行上传功能开发,在jdk1.7上不适用问题的解决
- 1.Qte-2.3.10的移植问题
- hashmap hashcode
- Unity 客户端连接服务器的例子
- 设计模式C++实现(6)——建造者模式
- yii框架autoload机制
- hdu4374 One hundred layer
- Populating Next Right Pointers in Each Node II
- linux socket编程主要函数功能说明