2016-05-17 14 views
0

私は多くを検索しましたが、解決策を得ることができませんでした。私は、Javaプログラムを使用して、ローカルのWindowsマシンからリモートのWindowsマシンにファイルをコピーする必要があります。 I上記のコードを実行している間、JSCHでjavaを使用してローカルウィンドウマシンからリモートウィンドウマシンにファイルをコピー

JSch jsch = new JSch(); 
    Session session = null; 
    session = jsch.getSession("username","hostname",22); 
    session.setPassword("password"); 
    session.setConfig("StrictHostKeyChecking", "no"); 
     session.connect(); 
    ChannelSftp channel = null; 
    channel = (ChannelSftp)session.openChannel("sftp"); 
    channel.connect(); 
     File localFile = new File("filePath"); 
     //If you want you can change the directory using the following line. 
     channel.cd("E:/xxx"); 
    channel.put(new FileInputStream(localFile),localFile.getName()); 
     channel.disconnect(); 
    session.disconnect(); 

を試してみましたが、私は以下のエラーが直面しています、

Exception in thread "main" 2: No such file 
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846) 
at com.jcraft.jsch.ChannelSftp._realpath(ChannelSftp.java:2340) 
at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:342) 

私はcygwinのは、リモートのWindowsマシンにインストールされています。 JschはWindowsのパスを見つけることができないようです。 WindowsマシンからLinuxマシンにファイルをコピーするとき、同じコードが適切に動作します。

私に上記の問題の解決方法を教えてください。または、javaでこれを達成するための他のオプションがありますか?ありがとう

答えて

3

Windowsのパスをドライブ文字で解決するには、/cygdrive prefixを使用する必要があります。この場合、パラメータ/cygdrive/e/xxxを使用してcdメソッド呼び出しを呼び出す必要があります。

+0

ありがとうございました。それは完璧に働いた.. – Jugi

関連する問題