Java - это кроссплатформенный язык программирования, благодаря которому программы, написанные один раз, можно запускать в большинстве операционных систем: в Windows, Linux и даже MacOS. И всё это без каких-либо изменений.
Но программы, написанные на Java, распространяются в собственном формате .jar, и для их запуска необходимо специальное ПО - Java-машина. В этой небольшой статье мы рассмотрим, как запустить jar-файл в Linux.
Как запустить jar Linux
Как я уже сказал, для запуска jar-файлов нам необходимо, чтобы на компьютере была установлена Java-машина. Если вы не собираетесь ничего разрабатывать, вам будет достаточно Java Runtime Environment или JRE. Что касается версии, то, обычно, большинство программ работают с 7 или 8 версией. Если нужна только восьмая, то разработчики прямо об этом сообщают. Посмотреть версию Java и заодно убедиться, что она установлена в вашей системе, можно с помощью команды:
java -version
У меня установлена восьмая версия, с пакетом обновлений 171. Если вы получаете ошибку, что команда не найдена, то это значит, что вам нужно установить java. В Ubuntu OpenJDK JRE можно установить командой:
sudo apt install openjdk-8-jre
Если вы хотите скомпилировать пример из этой статьи, то вам понадобиться не JRE, а JDK, её можно установить командой:
sudo apt install openjdk-8-jdk-headless
Чтобы узнать, как установить Java в других дистрибутивах, смотрите статью по ссылке выше. Когда Java будет установлена, вы можете очень просто запустить любой jar-файл в Linux, передав путь к нему в качестве параметра Java-машине. Давайте для примера создадим небольшое приложение:
vi Main.java
vi MANIFEST.MF
Затем скомпилируем наше приложение в jar-файл:
javac -d . Main.java
jar cvmf MANIFEST.MF main.jar Main.class
Теперь можно запустить наш jar-файл командой java с параметром -jar:
java -jar main.jar
Таким образом вы можете запустить любой jar-файл, который собран для вашей версии Java. Но не очень удобно каждый раз открывать терминал и прописывать какую-либо команду. Хотелось бы запускать программу по щелчку мышки или как любую другую Linux-программу - по имени файла.
Если мы дадим программе право на выполнение:
chmod u+x ./main.jar
И попытаемся её запустить, то получим ошибку:
Чтобы её исправить, нам понадобиться пакет jarwrapper:
sudo apt install jarwrapper
Теперь можно запускать java в Linux по щелчку мыши или просто командой.
./main.jar
Выводы
В этой небольшой статье мы рассмотрели, как запустить jar Linux с помощью java-машины, а также как упростить команду запуска. Если у вас остались вопросы, спрашивайте в комментариях!
Preply - платформа, позволяющая найти репетитора, который поможет вам заговорить на новом языке. На платформе есть репетиторы со всего мира для английского, немецкого, французского и многих других языков. Особенность платформы в том, что у каждого преподавателя есть видео-превью, где вы можете услышать его произношение и акцент, чтобы понять, будет ли вам комфортно работать вместе. Посмотреть детали














Ув.админ!А не по этой теме можно или ГДЕ или КАК задать вопрос по xubuntu?
Было бы не лишним еще описать как можно это делать без установленной java и(или) с какой-то определенной версией (при наличии нескольких). Это не всем нужно, но может кому-то дало бы знание что так можно.
Без установленной Java - никак....
А что касаемо переключений между версиями, то, как-то так:
update-java-alternatives -l или ls /usr/lib/jvm # просмотр установленных версий
sudo update-java-alternatives -s имя_версии # активация нужной версии, где имя берём из предидущей команды, например: sudo update-java-alternatives -s java-1.8.0_181-openjdk-amd64
java -version # проверяем активированную в текущий момент версию Java
P.S.: для быстрого переключения можно alias'ы посоздавать или скрипт-команды и добавить в ~/.bashrc, например. Мне оно не надо, при сборке ядер для Андроид-девайсов - я всё это в свой сборочный скрипт прописываю - мне так "копи-пастить" удобнее.
Забыл совсем...вот моя инструкция, например так можно автоматизировать переключение версий Java, чутка подправьте под современные реалии: http://4pda.ru/forum/index.php?act=findpost&pid=44184239&anchor=Spoil-44184239-20
Но не очень удобно каждый раз открывать терминал и прописывать какую-либо команду.
Наоборот, это очень удобно. А чтобы не писать точку-слэш каждый раз и исполнять программу находясь в любом каталоге файловой системы, можно положить символическую ссылку в любой каталог из PATH, например как описано здесь в пункте 2.
А почему вы исходник пишете в Main.java, а компилируете TecmintApp.java? это такой хитрый план?
И ещё. Когда вы делаете chmod, зачем точку-слэш пишете перед именем файла? Оно, ЕМНИП, вроде бы не требуется.
В остальном вроде повторяется.
Первое - исправил. Второе - не требуется, но и не мешает.
Спасибо, помогла статья!
Не могу только оценку поставить, вылезает "Referrer".
Подскажите, есть TETRIS.java, нужно чтобы когда перехожу на айпи адрес, то сразу открывалась эта игра ТЕТРИС. AWS запушен с убунтой
Подскажите пожалуйста, есть програмка "ubnt-discovery-v2.4.1.jar" запускается на долю секунды и все. Ошибок ни каких не выдает. Как можно исправить.
p/s: Пытаюсь с Windows перейти на Linux.
Почему такая ошибка?
Нет такого файла или каталога
$ javac -d . Main.java
$ jar cvmf MANIFEST.MF main.jar Main.class
java.io.FileNotFoundException: MANIFEST.MF (Нет такого файла или каталога)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream.(FileInputStream.java:157)
at java.base/java.io.FileInputStream.(FileInputStream.java:112)
at jdk.jartool/sun.tools.jar.Main.run(Main.java:267)
at jdk.jartool/sun.tools.jar.Main.main(Main.java:1680)
Спасибо!