我想使用ssh运行Java程序,我已经复制了私钥,并且可以运行简单的linux命令。
如果从服务器运行此命令,我可以看到所有目录
ssh user@192.168.1.2 pwd
但是我想运行一个Java jar应用程序,如下所示:
ssh user@192.168.1.2 java -Djava.library.path=myapp/. classpath=myapp/myapp.jar:. myClass
这是我在客户端计算机上完全运行我的应用程序的方式:
java -Djava.library.path=myapp/. classpath=myapp/myapp.jar:. myClass
我收到此错误,很明显,已安装Java
java: command not found
答案 0 :(得分:1)
最可能的问题是java
帐户的命令搜索路径中没有user
命令。
以user
登录到客户端计算机,然后键入java -version
。如果显示"command not found"
,则无可辩驳的证据表明java
不在用户的命令搜索路径中。
使用您可以运行java
的帐户登录到客户端计算机。现在运行java -version
确认。假定它起作用,请运行which java
来找到java
命令的路径。 (如果它不起作用,那么您可能对Java的安装是错误的。或者至少……对正确的正确安装。)
在客户端计算机上,计算出“ myapp”目录的绝对路径是什么。检查“ myapp”目录及其内容是否可由“用户”读取。
从服务器尝试像这样运行应用程序:
ssh user@192.168.1.2 /path/to/java \
-Djava.library.path=/path/to/myapp \
-classpath /path/to/myapp/myapp.jar myClass
注意:
java
不在用户的命令搜索路径中,请为java
命令使用绝对路径名。实际上,如果您担心用户可能将java
命令“别名”到其他内容,则无论如何都建议使用绝对路径。myapp
...以避免用户移动,更换等问题。.
。很明显,已经安装了Java ...
为什么很明显?
你怎么知道的?您可以保证所有客户端计算机都可以吗?您能保证“用户”不会惹事吗?
您确定正确安装了Java吗?例如,您是否已将其安装在用户的“默认”命令搜索路径上的位置?
在这种情况下,您需要检查/仔细检查所有假设。小心。有条不紊。问题通常是您忽略了“明显的面部手掌”。
(犯错误是人为的……假设您没有这样做会适得其反。)
答案 1 :(得分:0)
创建一个shell文件,并使用以下命令在ssh上运行该文件:
ssh user@host "sh ~/app-start.sh"