SSH2-Java远程调用Linux中的shell脚本执行时不能获取到JDK环境问题解决!

1 篇文章 0 订阅
1 篇文章 0 订阅

遇到了这么一个需求,要求远程通过Java调用服务器上的sh脚本。首先通过SSH获取连接,再通过传入合法的命令调用执行。在此就碰到了个坑,执行一些简单的命令脚本没有问题,当涉及到其他应用服务需要用到JDK环境才能执行的命令时,便会报找不到JRE或是请用JDK *** (版本)运行的错误提示。检查之后发现,明明在/etc/profile中配置过环境变量了,java -version 一点毛病也没有的怀况怎么还会找不到呢?

重点来了,其实很好解决,就是一个命令的事,但其罪魁祸首可能就是:ssh客户端的shell 可能是csh 、tcsh 、zsh ,其不会读取/etc/profile,而目标机器的shell是bash;

正确的做法就是在command命令字符串前加上bash -lc :

如ssh.command("bash -lc 'java -version');

完美解决!

参考自:https://www.cnblogs.com/huangjianan/p/3972738.html;

Java远程调用脚本文件小工具下载:https://download.csdn.net/download/minantadd/12035339

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值