[英]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
帐户的命令搜索路径上。
以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 代码。很明显,java安装好了...
为什么很明显?
你怎么知道? 你能保证所有客户端机器都这样吗? 你能保证“用户”不会乱搞吗?
您确定 Java 安装正确吗? 例如,您是否已将其安装在用户的“默认”命令搜索路径上?
在这种情况下,您需要检查/仔细检查所有假设。 小心。 有条不紊。 问题通常是您忽略的“面部明显”。
(犯错误是人类的行为......而假设你没有犯错则适得其反。)
创建一个 shell 文件并使用以下命令通过 ssh 运行该文件:
ssh user@host "sh ~/app-start.sh"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.