我正在 Servlet 类
的 doPost()
方法中执行一个命令,它在 Tomcat 上运行。
命令是:
plink -pw **** username@hostname tail -1000 /temp/info.txt
当我在 Windows 控制台上运行该命令时运行良好,但在 servlet 中执行时它会抛出此错误。
java.io.IOException: Cannot run program "plink": CreateProcess error=2, The system cannot find the file specified
我尝试通过 Runtime.getRuntime().exec(command)
以及通过
ProcessBuilder pb = new ProcessBuilder("plink", "-pw", "***","username@hostname","tail","-1000","/temp/info.txt")
最佳答案
当程序通过某些中间角色运行时,用户的环境通常不会生效,因为 shell 的 PATH 是在 .bashrc 中设置的,每个新 shell 都会重新执行。
因此,例如,Java 进程甚至不运行 shell,因此不会在 PATH 的目录中进行搜索。
在这个系统上通过 Process 运行的程序和在另一个系统上通过远程执行服务运行的程序使用完整路径名。
关于java.io.IOException : Cannot run program "plink": CreateProcess error=2, 系统找不到指定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453838/