我可以使用ssh运行Java jar程序吗?

时间:2018-11-20 13:00:37

标签: java ssh

我想使用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

2 个答案:

答案 0 :(得分:1)

最可能的问题是java帐户的命令搜索路径中没有user命令。

  1. user登录到客户端计算机,然后键入java -version。如果显示"command not found",则无可辩驳的证据表明java不在用户的命令搜索路径中。

  2. 使用您可以运行java的帐户登录到客户端计算机。现在运行java -version确认。假定它起作用,请运行which java来找到java命令的路径。 (如果它不起作用,那么您可能对Java的安装是错误的。或者至少……对正确的正确安装。)

  3. 在客户端计算机上,计算出“ myapp”目录的绝对路径是什么。检查“ myapp”目录及其内容是否可由“用户”读取。

  4. 从服务器尝试像这样运行应用程序:

      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 ...以避免用户移动,更换等问题。
    • classpath选项的语法与您向我们展示的语法不同
    • 除非您的Java应用期望将从用户的主目录中加载其他Java代码,否则您不应在类路径上使用.

  

很明显,已经安装了Java ...

为什么很明显?

你怎么知道的?您可以保证所有客户端计算机都可以吗?您能保证“用户”不会惹事吗?

您确定正确安装了Java吗?例如,您是否已将其安装在用户的“默认”命令搜索路径上的位置?

在这种情况下,您需要检查/仔细检查所有假设。小心。有条不紊。问题通常是您忽略了“明显的面部手掌”。

(犯错误是人为的……假设您没有这样做会适得其反。)

答案 1 :(得分:0)

创建一个shell文件,并使用以下命令在ssh上运行该文件:

ssh user@host "sh ~/app-start.sh"