Java 当我使用JSCH通过SSH运行命令时退出状态2

Java 当我使用JSCH通过SSH运行命令时退出状态2,java,jsch,Java,Jsch,我正在尝试使用JSch通过SSH运行以下命令: AlgoName-m/tmp/input1.txt-f/tmp/input2.txt>/tmp/output.txt exitStatus的值为2。该命令不能通过SSH和Jsch工作,但它在服务器上成功运行 我的代码: ChannelExec channelExec = (ChannelExec) s.openChannel("exec"); channelExec.setCommand(command);

我正在尝试使用JSch通过SSH运行以下命令:

AlgoName-m/tmp/input1.txt-f/tmp/input2.txt>/tmp/output.txt

exitStatus的值为2。该命令不能通过SSH和Jsch工作,但它在服务器上成功运行

我的代码:

        ChannelExec channelExec = (ChannelExec) s.openChannel("exec");
        channelExec.setCommand(command);         
        channelExec.connect();

        int exitStatus = channelExec.getExitStatus();
        channelExec.disconnect();

我试图运行的算法是用Perl编写的,实际上,当我通过JSCH执行远程SSH命令时,用于运行命令的用户配置文件没有加载,因此环境变量也没有加载

解决方案是在运行命令时加载配置文件,如下所示:

bash -l -c 'AlgoName -m /tmp/input1.txt -f /tmp/input2.txt > /tmp/output.txt'

您是否尝试使用相同的用户名通过SSH手动运行它?这可能是权限问题。@jbx是的,当我与服务器上的同一用户连接时,该命令工作正常,我解决了问题。我在下面的答案中发布了解决方案