【问题标题】:Error in executing a Jar file in remote machine在远程机器上执行 Jar 文件时出错
【发布时间】:2023-03-21 11:55:01
【问题描述】:

我正在尝试执行远程机器中存在的jar file。当我从本地机器执行以下命令时,出现错误:

ssh -i /root/.ssh/pem_file user@[host_ip]:/home/user/folder1/java -cp jar1.jar -a option1 -e user1@gmail.com -f TextFile.txt

/home/user/folder1/ 是远程机器上存在jar file 的位置。我得到的错误是:

Unknown cipher type 'p'

然后我查找了这个错误,发现 ssh 我们可能不需要它。因此,我从中删除了 -cp 并执行了以下命令:

ssh -i /root/.ssh/pem_file user@[host_ip]:/home/user/folder1/java jar1.jar -a option1 -e user1@gmail.com -f TextFile.txt

现在我得到错误:

ssh: Could not resolve hostname [host name]:/home/user/folder1/java: nodename nor servname provided, or not known

我该如何解决这个错误?

【问题讨论】:

  • 您必须通过ssh 连接并在一行代码中运行jar 吗?
  • 当您说[host_ip] 时,您是否将host_ip 括在方括号中([ ])?
  • @JonnyHenly 不,我没有将 ip 包含在 [ ] 中。我刚刚在帖子中展示了这种方式

标签: java ssh jar


【解决方案1】:

该命令应该传递给ssh,在主机名后用空格而不是冒号分隔,如下所示:

ssh -i /root/.ssh/pem_file user@[host_ip] /home/user/folder1/java -cp jar1.jar -a option1 -e user1@gmail.com -f TextFile.txt

如果命令中的某些部分在发送到远程主机之前可以由本地 shell 解析(例如 cd /tmp && lscat /file | uniq > some.log),则应将其括在单引号中:

ssh -i /root/.ssh/pem_file user@[host_ip] 'cd /home/user/folder1 && java -jar jar1.jar -a option1 -e user1@gmail.com -f TextFile.txt'

【讨论】:

  • @JonnyHenly 不,并不总是需要。只需尝试执行ssh example.com java -version
  • @JonnyHenly 命令的哪一部分应该用引号括起来?
  • 不是必需的,但这是一种很好的做法,尤其是在您运行多个命令时。
  • @user2966197 我认为您在指定文件夹中没有java 可执行文件,您可以尝试我回答中的第二个示例吗?
  • @user2966197 我想你可能会,cd 在运行 java 命令之前进入目录。
【解决方案2】:

那是一个可执行的 jar 吗?

ssh -i /root/.ssh/pem_file user@[host_ip] 'java -jar jar1.jar -a option1 -e user1@gmail.com -f TextFile.txt'

否则,跟随 -cp 与主类:

ssh -i /root/.ssh/pem_file user@[host_ip] 'java -cp jar1.jar full.package.name.ClassName -a option1 -e user1@gmail.com -f TextFile.txt' 

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 2012-07-17
    • 2016-06-26
    • 2015-02-09
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 2015-05-03
    相关资源
    最近更新 更多