簡體   English   中英

Java程序在bash腳本中運行但不運行

[英]Java program runs but not in bash script

我構建了一個java程序,它運行命令“jps”並查看所有JVM並通過從JPS命令的輸出中提取其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)

如果我自己去機器並運行同樣的命令就行了。 我不想切換到exec解決方案。

任何想法謝謝

本身並不是一個Java的問題,它的下跌在這兩種情況下在你的環境的差異。 具體來說,當您以交互方式運行時, $PATH變量包含jps的目錄,而在后一種情況下,它不包含jps的目錄。

看看遠程機器上的.bash_profile.bashrc文件 - 我懷疑該路徑將在.bash_profile文件中設置,該文件不會針對非登錄shell執行(例如運行單個命令的SSH調用) )。 如果在.bashrc正確設置路徑,那么您當前的調用應該開始工作。

(注意這假設您正在為shell使用bash,盡管大多數其他shell在登錄shell和非登錄shell init文件之間有類似的區別。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM