Board logo

标题: Apache FTPServer安装为Windows服务不能启动的解决方法 [打印本页]

作者: shillan    时间: 2013-9-8 11:45     标题: Apache FTPServer安装为Windows服务不能启动的解决方法

服务器环境是Windows2008 64位
安装过程:
1.下载Apache FTPServer的Windows版本,解压到D:\FTPServer
2.安装jre到C:\Program Files\Java\jre7并在系统中添加环境变量JAVA_HOME为此路径
3.然后安装为windows服务
  1. cd D:\FTPServer\bin
  2. d:
  3. service.bat install ftpd res/conf/ftpd-typical.xml
复制代码
4.net start ftpd启动时出现问题
google后在下面地方找到一些有用的信息
Apache FtpServer在64位系统下服务不能启动解决方法
使用上面的方法,下载最新tomcat,用其中的Tomcat.exe改名并替换bin目录下的ftpd.exe
然后如果mode=java时可以启动,但不能停止服务
5.尝试使用tomcat所带的service.bat安装服务,发现提示JAVE_HOME变量没有定义正确
打开service.bat查看,发现和ftpserver所带的批处理不同,里面区分了JRE_HOME,JAVA_HOME,后者对应的是jdk的路径
猜测原来的命令和jdk更匹配些
于是安装jdk,并设置JAVA_HOME为jdk目录,然后重新安装服务
  1. service.bat remove ftpd
  2. service.bat install ftpd res/conf/ftpd-typical.xml
复制代码
这时net start ftpd,net stop ftpd都可以执行成功
6.换回FTPServer原来自带的ftpd.exe,还是执行失败

总结:
1.使用tomcat中带的启动文件替换FTPServer中的ftpd.exe
2.使用jdk作为JAVA_HOME,而不能是jre
作者: shillan    时间: 2013-9-8 11:46     标题: 附: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服务,发现服务将可以正常启动。
  以上方法在Windows2008 SP2 64Bit下验证通过。




欢迎光临 逐梦论坛 (http://temp2023.zhumeng.org/) Powered by Discuz! 7.2