写了一个FTP的上传的类,用的是enterprisedt的ftp包。
在Windows上运行很正常,在LINUX调这个类的构造函数都不调。不知为什么,帮忙看看有什么问题,也不报任何异常。JDK都是1.5,linux为红帽9 FC5
代码如下:
File file=new File(strLocalFile);
System.out.println("file:"+strLocalFile);
if (file.exists())
  {
     System.out.println("upload ftp");
     //FTP传送文件到远程主机
    boolean bOk=false;
try {
System.out.println("构造前");
FTPTransfer ftp=new FTPTransfer(1);
System.out.println("构造后");//在linux上没有这条信息?
bOk = ftp.upload(strFTPHost, strFTPID, strFTPPass, strRemoteFile, strLocalFile);
} catch (Exception e) {
e.printStackTrace();
}
}/////////////////
import com.enterprisedt.net.ftp.*;//申明没用到JNIpublic class FTPTransfer
{
   public FTPTransfer(int i)
   {
      System.out.println("value:"+i);
      //在windows上输出,在linux上无输出,奇怪
    }
}

解决方案 »

  1.   

    我上次也是linux上传不行,也是到xx.storefile()时就停住了
    后来用root用户登陆就可以了lz可以也试一下用root,请供参考
      

  2.   

    当前帐号就是root进去的,我在linux上用mozilla连ftp还可以上传。
    程序还没走到那一步,连构造函数都没有执行。用-verbose参数看了一下class加载的过程也加载了FTPTransfer这个类
      

  3.   

    关于移植,你检查一下系统相关的一些地方:
    文件分隔符。windows是 \ windows是 /
    jdk版本。虽然你说你装的都是jdk1.5。但是你还是认真 java -version 一下,因为很多Linux都喜欢自带上自己的JRE。
    访问权限。确认以下你有足够的权限在Linux下做相关的操作。
    换行符号。 windows是\r\n Linux下是 \n (不过你这个应该不用考虑这个问题)
    CLASSPATH,换了环境,CLASSPATH得确定也正确
      

  4.   

    问题已经找到,原来是设置的classpath的问题,在Windows上设了ftp包在classpath中,但linux的启动sh里面,没有把这个包加进去,造成了这个问题。奇怪的是找不到这个jar,连报异常也没给我报。害的我找了半天,希望大家不要再犯同样的错误。
    不过还要谢谢两位,散分了!