【发布时间】:2019-09-16 19:41:09
【问题描述】:
我正在使用 Jcraft JSch 连接到远程机器并执行命令。由于它是一个非交互式 shell,它没有找到 Java 主页。使用 jsch 时如何设置 Java 主页?看起来像
((ChannelExec) channel).setEnv("LANG", "UTF-8");
((ChannelExec) channel).setEnv("JAVA_HOME", "/blah/java/J8.0_64/");
已弃用?
public String sendCommand(String command) {
StringBuilder outputBuffer = new StringBuilder();
try {
Channel channel = sesConnection.openChannel("exec");
((ChannelExec) channel).setEnv("LANG", "UTF-8");
((ChannelExec) channel).setEnv("JAVA_HOME", "/blah/java/J8.0_64/");
((ChannelExec) channel).setCommand(command);
InputStream commandOutput = channel.getInputStream();
channel.connect();
int readByte = commandOutput.read();
while (readByte != 0xffffffff) {
outputBuffer.append((char) readByte);
readByte = commandOutput.read();
}
channel.disconnect();
} catch (IOException ioX) {
logWarning(ioX.getMessage());
return null;
} catch (JSchException jschX) {
logWarning(jschX.getMessage());
return null;
}
return outputBuffer.toString();
}
执行命令时遇到错误
JAVA_HOME 未设置,找不到 javac 推断位置,请设置 JAVA_HOME。
【问题讨论】:
-
((ChannelExec) channel).setCommand(command);您能否在edit 的问题中包含您尝试在此处运行的实际命令的示例? -
@Kenster ((ChannelExec) channel).setCommand(command) 是我正在使用的测试方法的一部分。实际测试中包含命令并尝试运行构建。问题不在于命令,但看起来它需要 java home 来运行此命令。
标签: java ssh environment-variables jsch