Как установить .jar в Ubuntu
Файл .jar являет собой архив, содержащий некоторое количество файлов программы, которую можно установить, используя Java Development Kit (JDK). По умолчанию, JDK не установлен в Ubuntu, но он доступен в репозиториях и его можно легко установить.
В этом совете мы разберем процесс установки .jar в Ubuntu.
- Откройте Терминал.
- Установите необходимое программное обеспечение, выполнив в командной строке следующую команду: sudo apt-get install sun-java-6-bin sun-java6-jdk
- Согласитесь с появившимся сообщением о Лицензии JDK.
- Перейдите в каталог, в котором находится файл jar.
- Выполните в командной строке следующую команду, которая позволит установить jar файл: java -jar file.jar заменив слово file на имя устанавливаемого jar-файла.
В результате этих действий вы получите установленный файл jar в Ubuntu.
Остались вопросы?
Если у Вас что-то не получилось или остались вопросы по данной проблеме — обратитесь к автору и он Вам поможет.
Станьте одним из экспертов!
Мы будем рады видеть в своих рядах людей, которые могут поделиться своим опытом с другими!
Linux (Ubuntu,Debian,Fedora), MS Windows (Server/Desktop), PHP.
Решение IT-проблем любой сложности.
Форум русскоязычного сообщества Ubuntu
Страница сгенерирована за 0.052 секунд. Запросов: 23.
- Сайт
- Об Ubuntu
- Скачать Ubuntu
- Семейство Ubuntu
- Новости
- Форум
- Помощь
- Правила
- Документация
- Пользовательская документация
- Официальная документация
- Семейство Ubuntu
- Материалы для загрузки
- Совместимость с оборудованием
- RSS лента
- Сообщество
- Наши проекты
- Местные сообщества
- Перевод Ubuntu
- Тестирование
- RSS лента
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.
Запуск jar файла на linux сервере
Я написал маленький скрипт на java, необходимо запустить на сервере который работает на linux. Я создаю jar файл с помощью IntelliJ IDEA делаю это так (File | Project Structure | Artifacts, artifact, jar —> From modules with dependencies Потом Build | Build artifacts) после через программу putty подключаюсь к серверу и запускаю jar файл, скрипт работает нормально пока окно в котором я запустил jar открыто, но после закрытия окна программы putty, скрипт перестает работать,почему так может происходить ? За ранние прошу прошения за такой странный вопрос я новичок в программировании.
Отслеживать
Николай Гнап
задан 2 мар 2020 в 5:47
Николай Гнап Николай Гнап
399 4 4 серебряных знака 15 15 бронзовых знаков
2 мар 2020 в 6:39
И ещё дубликат: Открыть cmd на сервере через ssh
2 мар 2020 в 6:49
И ещё один: Если ssh внезапно закрывается, как сохранить результаты работы на удалённом хосте?.
2 мар 2020 в 6:49
Спасибо, надо было лучше искать, я просто не знал как правильно спросить в google.
2 мар 2020 в 6:55
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Как вариант, сделайте следующее:
- Напишите sudo nano /etc/systemd/system/myapplication.service
- Вставьте следующий код, отредактировав его под вашу программу:
[Unit] Description= # можете тут добавить описание программы, если нужно After=syslog.target After=network.target[Service] User= # напишите какой пользователь может пользоваться данной функцией, к примеру root Type=simple [Service] ExecStart=/usr/bin/java -jar /path/to/file/myapplication.jar Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier= # Короткое название вашей программы, например 'myapplication' [Install] WantedBy=multi-user.target
- Закрываем nano командами Ctrl+x далее пишем y или Y и жмем Enter.
- Пишем следующюю строку для запуска проекта:
sudo systemctl start myapplication
Для завершения проекта:
sudo systemctl start myapplication
Для перезагрузки файла (в случае остановки/ошибки/обновлении файла):
sudo systemctl restart myapplication
Для просмотра статуса запуска:
sudo systemctl status myapplication
Запуск Java классов и JAR-ов не по учебнику
Меня давно занимала мысль как в Linux-е запускать программы на Java без вспомогательных Bash скриптов. Я не видел приемлемого решения, если не считать способ «bash script payload», когда в конец скрипта помещается бинарный файл.
Но на прошлой неделе случайно наткнулся на модуль ядра binfmt_misc, с помощью которого можно перехватить исполнение файла по его magic number. Для этого через update-binfmts добавляется собственный обработчик для получения имени исполняемого файла и аргументов пользователя.
Первое открытие
Как оказалось в моей Ubuntu 16.04 уже зарегистрирован обработчик для JAR файлов:
update-binfmts --display . jar (enabled): package = openjdk-8 type = magic offset = 0 magic = PK\x03\x04 mask = interpreter = /usr/bin/jexec detector =
Отдав команду chmod +x foo.bar я радостно потирал руки, но реальность оказалось сурова — запуск ./foo.jar выдал следующее:
invalid file (bad magic number): Exec format error
Погуглив, я нашел обросший мхом баг bugs.java.com/bugdatabase/view_bug.do?bug_id=6401361 Как оказывается сборка через Maven не добавляет «0xcafe» в начало JAR файла. Не менее безответственно ведет себя и плагин maven-assembly-plugin. Что не нравится /usr/bin/jexec, зарегистрированному обработчику по умолчанию.
Погуглив еще, я нашел решение проблемы через установку пакета jarwrapper. После установки добавляется новый обработчик /usr/bin/jarwrapper и страховка /usr/bin/jardetector (проверяет по META-INF что это действительно JAR). Но изучив код обработчика мне не понравилась куча лишней работы, которую делает скрипт запуская множество вспомогательных программ.
Поэтому решением стал собственный обработчик:
#!/bin/sh #/usr/bin/jarinvoke JAR=$1 shift exec java -jar $JAR $@
Дальше открываем файл sudo gedit /var/lib/binfmts/jar и регистрируем обработчик заменив строчку с /usr/bin/jexec на /usr/bin/jarinvoke. На самом деле это плохое решение и лучше создать собственную группу (об этом ниже), но для первичного понимания сойдет.
Для вступления изменений в силу может потребоваться выполнить:
sudo update-binfmts --disable jar && sudo update-binfmts --enable jar
После чего можете запускать JAR файлы как любые другие исполняемые файлы.
Исполняемые классы
Теперь можно идти дальше и сделать из Java классов исполняемые файлы, где jarwrapper не сможет помочь. Обработчик будет работать только для классов с пакетом по умолчанию (т.е. классы с отсутствующим package заголовком). Может можно сделать и лучше, но мне хватило такой функциональности для «скриптования» на Java:
#!/bin/sh # /usr/bin/clsinvoke CLASS_FILE=$1 shift ABSOLUTE_PATH=`readlink -f $CLASS_FILE` CLASS=`basename $ABSOLUTE_PATH` CLASS=$ CLASSPATH=`dirname $ABSOLUTE_PATH` exec java -cp $CLASSPATH $CLASS $@
После чего регистрируем собственный обработчик (этим же способом можно создать новый обработчик для JAR-ов не редактируя /usr/bin/jexec):
sudo update-binfmts --package clsinvoke --install clsinvoke /usr/bin/clsinvoke --magic '\xca\xfe\xba\xbe'
public class HelloWorld < public static void main(String[] args) < System.out.println("Hello, World"); >>
javac HellWorld.java chmod +x HelloWorld.class ./HelloWorld.class Hello, World
Можно пойти и дальше, сделав более сложный обработчик, который по импорту классов будет определять какие библиотеки добавить в CLASSPATH из ~/.m2, но это отдельная история. Сейчас интересен взгляд со стороны, замечания, дополнения, если таковые есть. После чего думаю оформить это в deb пакет и выложить всё на гитхабе.
- Java
- Разработка под Linux