我正在doPost()
Servlet Class
方法中执行命令,该方法在Tomcat上运行。
命令是:
plink -pw **** username@hostname tail -1000 /temp/info.txt
当我在Windows控制台上运行它时,该命令运行正常但在servlet内部执行时会抛出此错误。
java.io.IOException:无法运行程序“plink”:CreateProcess error = 2,系统找不到指定的文件
我尝试通过Runtime.getRuntime().exec(command)
以及
ProcessBuilder pb = new ProcessBuilder("plink", "-pw", "***","username@hostname","tail","-1000","/temp/info.txt")
答案 0 :(得分:1)
当程序通过某些中介actor运行时,用户的环境通常不起作用,因为shell的PATH在.bashrc中设置,以便与每个新shell一起重新执行。
因此,例如,Java进程甚至不运行shell,因此不会在PATH的目录中进行搜索。
对通过此处运行的程序以及通过另一个系统上的远程执行服务运行的程序使用完整路径名。
答案 1 :(得分:0)
需要提供完整的plink路径,例如C:\Program Files\PuTTY\plink.exe -pw **** username@hostname tail -1000 /temp/info.txt