繁体   English   中英

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

[英]Can I run a java jar program with 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

最可能的问题是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 安装正确吗? 例如,您是否已将其安装在用户的“默认”命令搜索路径上?

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

(犯错误是人类的行为......而假设你没有犯错则适得其反。)

创建一个 shell 文件并使用以下命令通过 ssh 运行该文件:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM