Главная >> Инструкции >> Как запустить jar в Linux

Как запустить jar в Linux

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

public class Main {
public static void main(String[] args){
System.out.println(" Losst test app! ");
}
}

vi MANIFEST.MF

Main-Class: Main

Затем скомпилируем наше приложение в 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-машины, а также как упростить команду запуска. Если у вас остались вопросы, спрашивайте в комментариях!

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

11 комментариев к “Как запустить jar в Linux”

  1. Было бы не лишним еще описать как можно это делать без установленной 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, например. Мне оно не надо, при сборке ядер для Андроид-девайсов - я всё это в свой сборочный скрипт прописываю - мне так "копи-пастить" удобнее.

      Ответить
  2. Но не очень удобно каждый раз открывать терминал и прописывать какую-либо команду.
    Наоборот, это очень удобно. А чтобы не писать точку-слэш каждый раз и исполнять программу находясь в любом каталоге файловой системы, можно положить символическую ссылку в любой каталог из PATH, например как описано здесь в пункте 2.

    Ответить
  3. А почему вы исходник пишете в Main.java, а компилируете TecmintApp.java? это такой хитрый план?

    И ещё. Когда вы делаете chmod, зачем точку-слэш пишете перед именем файла? Оно, ЕМНИП, вроде бы не требуется.

    В остальном вроде повторяется.

    Ответить
  4. Подскажите, есть TETRIS.java, нужно чтобы когда перехожу на айпи адрес, то сразу открывалась эта игра ТЕТРИС. AWS запушен с убунтой

    Ответить
  5. Подскажите пожалуйста, есть програмка "ubnt-discovery-v2.4.1.jar" запускается на долю секунды и все. Ошибок ни каких не выдает. Как можно исправить.
    p/s: Пытаюсь с Windows перейти на Linux.

    Ответить
  6. Почему такая ошибка?
    Нет такого файла или каталога

    $ 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)
    Спасибо!

    Ответить

Оставьте комментарий