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-машины, а также как упростить команду запуска. Если у вас остались вопросы, спрашивайте в комментариях!
Ув.админ!А не по этой теме можно или ГДЕ или КАК задать вопрос по 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)
Спасибо!