日期:2014-05-17  浏览次数:20975 次

Apache FtpServer在64位系统下服务不能启动解决方法

?Apache FTPServer是一款用Java开发的FTP开源服务器,其二进制文件及源码可从http://mina.apache.org/ftpserver/下载。然而在使用中,发现如果将其安装为64位的Windows系统的服务时,服务将无法启动,总是提示错误。打开Log文件,则可以发现以下错误信息:

?????? [174? javajni.c] [error] %1 is not a valid Win32 application.

????? ?[947? prunsrv.c] [error] Failed creating java C:\Program Files\Java\jdk1.6.0_26\jre\bin\server\jvm.dll

??????? 在网上搜索该问题的解决方案,几乎没有相关的内容,个别相关网页提及的解决方法是将32系统下的一个动态库拷贝到system32或其它什么指定的目录下,尝试后也未能解决问题。并且,从理论是说,在64位系统下,并且已成功安装64位的JDK或JRE的情况下,这么做似乎也是没有道理的。

??????? 经过分析其bin目录下的service.bat脚本文件及其它脚本,可以发现其实bin目录下的ftpd.exe并不是FTP服务器的必需文件,它只不过是为了在Windows系统下实现系统服务的一个外壳程序,似乎它本身是另外一个开源项目的二进制文件(这一点未经查实,只是猜测)。因此结合在启动FTP服务时日志中记录的异常信息,大胆推测是由于这个ftpd.exe不能在64位Windows系统下正常启动Java编写的FTP程序而造成的,而基于此前的分析,尝试拷贝Tomcat较新版本(6或7)安装在64位Windows系统下的bin目录里的tomcat6.exe或tomcat7.exe到Apache FTPServer的bin目录下,并将原有的ftpd.exe改名或删除,然后将tomcat6.exe或tomcat7.exe改名为ftpd.exe。再次尝试重启FTP服务,发现服务将可以正常启动。

以上方法在Windows 7 SP1 64Bit下验证通过。

1 楼 csdn_zuoqiang 2012-06-10  
win7下面,恐怕很多人都用windows自带的ftp功能吧。站长今天在这里介绍的是一个开源免费的ftp软件–apache-ftpserver,它是由java编写的。
以下步骤,将使用站长的安装目录为例,在你自己安装的时候,请更换为自己的目录
1、最新版是1.0.6,下载地址http://mina.apache.org/ftpserver/apache-ftpserver-106-release.html,确认你下载的是zip格式。
2、解压缩zip文档中的文件夹到你想要的任意目录,站长解压到的目录是D:\Program Files (x86)\Web,然后将文件夹重命名为ftpserver。这时你的apache-ftpserver的所有文件与文件夹夹应该位于D:\Program Files (x86)\Web\ftpserver。
3、进行初始配置,打开D:\Program Files (x86)\Web\ftpserver\res\conf\ftpd-typical.xml文件。修改如下:
<server xmlns="http://mina.apache.org/ftpserver/spring/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd "
id="myServer"
max-logins="5"
anon-enabled="false"
max-anon-logins="0"
max-login-failures="3"
login-failure-delay="30000">
<listeners>
<nio-listener name="default" port="21">
<ssl>
<keystore file="./res/ftpserver.jks" password="password" />
</ssl>
</nio-listener>
</listeners>
<file-user-manager file="./res/conf/users.properties" />
</server>
解释说明:
max-logins:允许同时登录ftp的用户数;
anon-enabled:是否运行匿名登录;
max-anon-logins:允许同时登录的最大匿名用户数;
max-login-failures:允许登录失败的次数,超过次数则关闭连接;
login-failure-delay:一次登录失败后,重新发起登录的间隔,单位毫秒;
4、打开D:\Program Files (x86)\Web\ftpserver\res\conf\users.properties,对admin部分修改如下:
ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
ftpserver.user.admin.homedirectory=./wwwroot
ftpserver.user.admin.enableflag=true
ftpserver.user.admin.writepermission=true
ftpserver.user.admin.maxloginnumber=3
ftpserver.user.admin.maxloginperip=3
ftpserver.user.admin.idletime=0
ftpserver.user.admin.uploadrate=0
ftpserver.user.admin.downloadrate=0
默认的用户名为admin,如果你要修改为别的,只要