Могу ли я запустить программу java jar с помощью ssh? - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу запустить программу Java с использованием ssh, я скопировал свои закрытые ключи и могу запускать простые команды 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

1 Ответ

0 голосов
/ 20 ноября 2018

Наиболее вероятная проблема заключается в том, что команда 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 отличается от того, что вы показали нам
    • У вас не должно быть . наclasspath, если ваше приложение Java не ожидает, что будет загружать дополнительный код Java из домашнего каталога пользователя.

Очевидно, что Java являетсяустановлен ...

Почему это очевидно?

Откуда ты это знаешь?Можете ли вы гарантировать это для всех клиентских машин?Можете ли вы гарантировать, что «пользователь» не будет связываться с вещами?

Вы уверены, что Java установлена ​​ правильно ?Например, что вы установили его в месте, где он находится по пути поиска команды по умолчанию для пользователя?

В такой ситуации вам необходимо проверить / перепроверить все ваши предположения,Внимательно.Методично.Проблема обычно в чем-то «очевидном», которую вы упустили из виду.

(Человек ошибается ... и контрпродуктивно полагать, что это не так.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...