gpt4 book ai didi

Java程序运行但不在bash脚本中

转载 作者:行者123 更新时间:2023-12-02 07:56:07 33 4
gpt4 key购买 nike

我构建了一个 java 程序,该程序运行命令“jps”并查看所有 JVM,并通过从 JPS 命令的输出中提取特定 JVM 的 id 来终止该 JVM。当我在 ubuntu 终端上运行它时,它工作正常。但后来我在 bash 中编写了一个脚本,以便从其他机器上 ssh 该机器并在那里运行该程序。

ssh $host "java -cp daemon.jar JVMname;"

现在问题来了。

Exception in thread "main" java.io.IOException: Cannot run program "jps": error=2, No     such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) at runtime.daemon.halt.main(halt.java:19)
Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)

如果我自己去机器并运行相同的命令,它就会起作用。我不想切换到执行解决方案。

任何想法谢谢

最佳答案

这本身并不是 Java 问题,而是由两种情况下的环境差异造成的。具体来说,当您以交互方式运行时,您的 $PATH 变量包含 jps 的目录,而在后一种通过 SSH 的情况下则不包含该目录。

查看远程计算机上的 .bash_profile.bashrc 文件 - 我怀疑路径将在 .bash_profile 中设置> 文件,该文件不会针对非登录 shell 执行(例如运行单个命令的 SSH 调用)。如果您在 .bashrc 中正确设置路径,那么您当前的调用应该开始工作。

(请注意,这假定您使用 bash 作为 shell,尽管大多数其他 shell 在登录 shell 和非登录 shell 初始化文件之间具有类似的区别。)

关于Java程序运行但不在bash脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617262/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com