使用 JSCH 的 SFTP 中的未知位置
Unknown location in SFTP using JSCH
我在使用 ind Oracle Data Integrator 时遇到短脚本 JSCH 的问题。
我想将文件从目录发送到服务器 SFTP。
我的代码:
import com.jcraft.jsch.*;
JSch ssh = new JSch();
Session session = ssh.getSession("pas", "host", 22);
session.setConfig("StrictHostKeyChecking", "no");
session.setConfig(
"PreferredAuthentications",
"publickey,keyboard-interactive,password");
session.setPassword("pass");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
sftp.put("C:\Tools\tmp.html", "/var/temp/temp.html");
channel.disconnect();
session.disconnect();
我收到错误:
ODI-1590: The execution of the script failed.
Caused By: org.apache.bsf.BSFException: BeanShell script error: Sourced file:
inline evaluation of: ``
import oracle.odi.km.exception.OdiKMException;
import com.jcraft.jsch.*;
J . . . '' Token Parsing Error: Lexical error at line 23, column 19.
Encountered: "W" (87), after : "\"C:\": <at unknown location>
BSF info: upload file at line: 0 column: columnNo
我做错了什么?
您必须转义本地路径中的反斜杠 String
:
sftp.put("C:\Tools\tmp.html", "/var/temp/temp.html");
这是因为反斜杠本身会转义下一个字符,如果您在 "C:\Tools\tmp.html"
中放置单个反斜杠,结果将是(但不是)类似 "C:oolsmp.html"
的东西,这不太可能被认为是有效路径。
在我的 IDE (eclipse) 中,带有单个反斜杠的 String
被认为是编译错误,代码甚至无法编译。
错误是这样的:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \ )
我在使用 ind Oracle Data Integrator 时遇到短脚本 JSCH 的问题。 我想将文件从目录发送到服务器 SFTP。 我的代码:
import com.jcraft.jsch.*;
JSch ssh = new JSch();
Session session = ssh.getSession("pas", "host", 22);
session.setConfig("StrictHostKeyChecking", "no");
session.setConfig(
"PreferredAuthentications",
"publickey,keyboard-interactive,password");
session.setPassword("pass");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
sftp.put("C:\Tools\tmp.html", "/var/temp/temp.html");
channel.disconnect();
session.disconnect();
我收到错误:
ODI-1590: The execution of the script failed.
Caused By: org.apache.bsf.BSFException: BeanShell script error: Sourced file:
inline evaluation of: ``
import oracle.odi.km.exception.OdiKMException;
import com.jcraft.jsch.*;
J . . . '' Token Parsing Error: Lexical error at line 23, column 19.
Encountered: "W" (87), after : "\"C:\": <at unknown location>
BSF info: upload file at line: 0 column: columnNo
我做错了什么?
您必须转义本地路径中的反斜杠 String
:
sftp.put("C:\Tools\tmp.html", "/var/temp/temp.html");
这是因为反斜杠本身会转义下一个字符,如果您在 "C:\Tools\tmp.html"
中放置单个反斜杠,结果将是(但不是)类似 "C:oolsmp.html"
的东西,这不太可能被认为是有效路径。
在我的 IDE (eclipse) 中,带有单个反斜杠的 String
被认为是编译错误,代码甚至无法编译。
错误是这样的:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \ )