Linux как запустить java приложение

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

Java — это кроссплатформенный язык программирования, благодаря которому программы, написанные один раз, можно запускать в большинстве операционных систем: в Windows, Linux и даже MacOS. И всё это без каких-либо изменений.

Но программы, написанные на Java, распространяются в собственном формате .jar, и для их запуска необходимо специальное ПО — Java-машина. В этой небольшой статье мы рассмотрим, как запустить jar-файл в Linux.

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

Как я уже сказал, для запуска jar-файлов нам необходимо, чтобы на компьютере была установлена Java-машина. Если вы не собираетесь ничего разрабатывать, вам будет достаточно Java Runtime Environment или JRE. Что касается версии, то, обычно, большинство программ работают с 7 или 8 версией. Если нужна только восьмая, то разработчики прямо об этом сообщают. Посмотреть версию Java и заодно убедиться, что она установлена в вашей системе, можно с помощью команды:

У меня установлена восьмая версия, с пакетом обновлений 171. Если вы получаете ошибку, что команда не найдена, то это значит, что вам нужно установить java. В Ubuntu OpenJDK JRE можно установить командой:

Если вы хотите скомпилировать пример из этой статьи, то вам понадобиться не JRE, а JDK, её можно установить командой:

Чтобы узнать, как установить Java в других дистрибутивах, смотрите статью по ссылке выше. Когда Java будет установлена, вы можете очень просто запустить любой jar-файл в Linux, передав путь к нему в качестве параметра Java-машине. Давайте для примера создадим небольшое приложение:

Источник

Установка Java в Ubuntu и Linux Mint

Что такое Java

Java — это язык программирования, разработанный компанией Sun Microsystems, которую потом купила компания Oracle.

Программы, написанные на Java обычно работают в различных операционных системах, то есть являются кроссплатформенными. Для запуска таких программ необходимо наличие в системе Виртуальной машины Java (Java Virtual Machine — JVM), то есть, проще говоря, наличие некоторых дополнительных компонентов, которые обеспечивают возможность запуска Java-программ в системе.

Обычно, когда говорят о том, что в Linux нужно установить Java, то имеют ввиду, что нужно установить Виртуальную машину Java, чтобы получить возможность запускать программы, написанные на Java.

Какие версии Java бывают и чем отличаются

Существует несколько реализаций Java для Linux. Самыми популярными являются OpenJDK и Oracle Java. В Linux обычно пользователь устанавливает одну из этих реализаций.

  • Oracle Java — реализация Java для Linux от компании Oracle. В ней содержатся некоторые закрытые (проприетарные) компоненты и компоненты, которые защищены патентами.
  • OpenJDK — реализация Java для Linux с открытым исходным кодом.

Обе версии вполне работоспособны и в Linux можно использовать любую из них. Но иногда, для некоторых приложений, рекомендуется использовать Oracle Java.

Читайте также:  What is linux hosts file

В Linux пакеты с Java представлены в двух редакциях:

  • JRE — Java Runtime Environment — компоненты, предназначенные для запуска Java-программ в Linux.
  • JDK — Java Development Kit — компоненты, предназначенные для запуска, компиляции и разработки Java-программ.

Какую версию устанавливать

Рядовому пользователю, которому нужно просто запускать Java-программы, обычно достаточно установить «OpenJDK JRE».

Если потребуется компиляция Java-программ, то нужно будет установить «OpenJDK JDK».

Рассмотрим, как установить Java в Ubuntu Linux. Абсолютно аналогично выполняется установка в Linux Mint и других дистрибутивах, основанных на Ubuntu.

Проверка версии Java

Чтобы проверить, установлена ли у вас уже в системе какая-либо версия Java, выполните в терминале команду:

Если Java установлена, то вы получите информацию о том, какие компоненты Java установлены в системе.

Установка OpenJDK

Установка OpenJDK JRE

Для установки OpenJDK JRE в Ubuntu Linux достаточно установить пакет default-jre. Для установки выполните в терминале команду:

Установка OpenJDK JDK

Если вы хотите установить OpenJDK JDK, то нужно установить пакет default-jdk (он также установит default-jre). Для установки выполните команду:

Установка OpenJDK определенной версии

Если вам нужно установить конкретную версию, то выполните одну из следующих команд. В репозиториях Ubuntu сейчас представлены OpenJDK версий 11 и 8.

После установки, можно проверить, какие компоненты Java установлены, выполнив команду:

Установка Oracle JDK

Установка Oracle JDK свежей версии

Свежую версию Oracle JDK можно установить, используя PPA-репозиторий, подготовленный проектом linuxuprising.

Сначала добавим PPA-репозиторий. Выполняем следующие команды. При выполнении первой команды появится информационное сообщение, нажмите Enter для продолжения.

Теперь выполним установку Oracle Java версии 12:

Во время установки нужно будет ознакомиться и принять лицензию:

Для установки Oracle Java версии 11 используйте команду:

Установка Oracle JDK старой версии

Если вам нужно установить Oracle JDK старой версии 8, то вы можете воспользоваться PPA-репозиторием, который подготовлен проектом webupd8. Для установки выполните в терминале следующие команды. При выполнении первой команды появится информационное сообщение, нажмите Enter для продолжения.

Как удалить Java

Если у вас установлены пакеты OpenJDK, то для их удаления используйте команду:

Или следующую команду, если требуется также удалить файлы конфигурации (полное удаление OpenJDK):

Для удаления Oracle Java используется команда:

Запуск Java-программ

Если Java установлена в Ubuntu Linux, то для запуска Java-программ обычно достаточно дважды щелкнуть по файлу программы. Он может иметь расширение .jar .

Для запуска .jar файлов из командной строки, выполните команду:

Заключение

Мы рассмотрели, какие версии Java бывают для Linux. Рассмотрели, как установить версию OpenJDK, а также версию Java от Oracle. Обычно начинающий пользователь вообще не понимает, что именно ему нужно установить. Поэтому краткое резюме: Если вам нужно просто запустить какую-нибудь Java-программу в Ubuntu Linux (Linux Mint и других подобных дистрибутивах), то устанавливайте OpenJDK JRE.

Источник

Как создать и выполнить файл .Jar в терминале Linux

JAR (Java ARchive) – это независимый от платформы формат файла, используемый для объединения многих файлов классов Java и связанных с ними метаданных и ресурсов, таких как текст, изображения и т. д., в один файл для распространения.

Он позволяет Java-средам эффективно разворачивать целое приложение в одном архиве и предоставляет множество преимуществ, таких как безопасность, его элементы могут быть сжаты, сокращено время загрузки, позволяетcz уплотнение пакетов и управление версиями, поддерживает переносимость.

Читайте также:  Как восстановить библиотеки dll windows 10

Он также поддерживает упаковку для расширений.

В этой статье мы покажем, как создать простое приложение Java и связать его с JAR-файлом и продемонстрируем, как выполнить файл .jar из терминала Linux.

Для этого у вас должен быть установлен инструмент командной строки java для запуска приложения Java и флаг -jar для выполнения программы, инкапсулированной в файл JAR.

Когда этот флаг используется, указанный JAR-файл является источником всех пользовательских классов, а другие параметры пути класса игнорируются.

Как создать JAR-файл в Linux

1. Сначала начните с написания простого Java-класса с основным методом для приложения TecmintApp для демонстрационных целей.

Скопируйте и вставьте следующий код в файл TecmintApp.java.

Сохраните файл и закройте.

2. Затем нам нужно скомпилировать и упаковать класс в JAR-файл, используя утилиты javac и jar, как показано ниже:

3. Создана Ounce tecmint app.jar, теперь вы можете выполнить файл с помощью команды java, как показано ниже:

Из вывода приведенной выше команды видно, что мы столкнулись с ошибкой. JVM (Java Virtual Machine) не смог найти наш основной атрибут, поэтому он не смог найти основной класс, содержащий основной метод (public static void main (String [] args)).

Файл JAR должен иметь манифест, содержащий строку в форме Main-Class: classname, которая определяет класс с основным методом, который служит отправной точкой нашего приложения.

4. Чтобы исправить вышеуказанную ошибку, нам нужно будет обновить JAR-файл, чтобы включить атрибут манифеста вместе с нашим кодом.

Давайте создадим файл MANIFEST.MF.

Скопируйте и вставьте следующую строку в файл MANIFEST.MF.

Сохраните файл и добавьте файл MANIFEST.MF в наш tecmintapp.jar, используя следующую команду:

5. Наконец, когда мы снова выполним файл JAR, он должен предоставить нам ожидаемый результат, как показано на выводе:

Для получения дополнительной информации см. Man-страницы java, javac и jar.

Источник

Запуск Java классов и JAR-ов не по учебнику

Меня давно занимала мысль как в Linux-е запускать программы на Java без вспомогательных Bash скриптов. Я не видел приемлемого решения, если не считать способ «bash script payload», когда в конец скрипта помещается бинарный файл.

Но на прошлой неделе случайно наткнулся на модуль ядра binfmt_misc, с помощью которого можно перехватить исполнение файла по его magic number. Для этого через update-binfmts добавляется собственный обработчик для получения имени исполняемого файла и аргументов пользователя.

Первое открытие

Как оказалось в моей Ubuntu 16.04 уже зарегистрирован обработчик для JAR файлов:

Отдав команду chmod +x foo.bar я радостно потирал руки, но реальность оказалось сурова — запуск ./foo.jar выдал следующее:

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

Читайте также:  Alt linux запуск скрипта

Поэтому решением стал собственный обработчик:

Дальше открываем файл sudo gedit /var/lib/binfmts/jar и регистрируем обработчик заменив строчку с /usr/bin/jexec на /usr/bin/jarinvoke. На самом деле это плохое решение и лучше создать собственную группу (об этом ниже), но для первичного понимания сойдет.

Для вступления изменений в силу может потребоваться выполнить:

После чего можете запускать JAR файлы как любые другие исполняемые файлы.

Исполняемые классы

Теперь можно идти дальше и сделать из Java классов исполняемые файлы, где jarwrapper не сможет помочь. Обработчик будет работать только для классов с пакетом по умолчанию (т.е. классы с отсутствующим package заголовком). Может можно сделать и лучше, но мне хватило такой функциональности для «скриптования» на Java:

После чего регистрируем собственный обработчик (этим же способом можно создать новый обработчик для JAR-ов не редактируя /usr/bin/jexec):

Можно пойти и дальше, сделав более сложный обработчик, который по импорту классов будет определять какие библиотеки добавить в CLASSPATH из

/.m2, но это отдельная история. Сейчас интересен взгляд со стороны, замечания, дополнения, если таковые есть. После чего думаю оформить это в deb пакет и выложить всё на гитхабе.

Источник

Как запустить .jar файл?

Я никак не могу понять как запускать .jar файлы, через «Открыть с помощью» я Java не нашел в списке, хотя у меня установлен, а в списке нет, только могу открыть архиватором, а запустить не могу. Или опять в эти «терминалы» нужно лезть?

можно прописать команду java -jar

Заверни в баш-скрипт вида:

Если jar-файл подготовлен специальным образом, можно через -jar , как посоветовали выше.

Если разработчик не озаботился пакетированием приложения для твоих нужд, то да: в терминалы.

А нельзя по легче как-то? На вендоус всё таки всё нормально должно работать, а тут фигня какая-то примитивная.

Не примитивная, а профессиональная 😉 Ну и ничего не мешает перекинуть ассоциацию с архиватора на яву.

Так там нет Java, можно ещё какую через «Использовать команду» как-то наверное запустить, но там ничего не работает. Может нужно установить OpenJDK 10?

UPD: увидел в тегах xfce

Или опять в эти «терминалы» нужно лезть?

Зачем тебе линукс и вообще комп, если не любишь «терминалы». Купи себе планшет на андроиде и тыкай в него до опупения, они специально для таких сделаны.

Разобрался!

Я установил OpenJDK 10 и теперь мождно открыть используя это.

На вендоус всё таки всё нормально должно работать, а тут фигня какая-то примитивная.

Ты просто абсолютизируешь свои привычки. Это как если бы ты купил дорогой фотоаппарат, тушка отдельно, объектив отдельно. При этом там надо выдержку настраивать, диафрагму, освещение оценивать. И тут ты думаешь: «на фотике в моём смартфоне всё таки всё нормально должно работать, а тут фигня какая-то примитивная».

Терминал даёт НАМНОГО БОЛЬШЕ возможностей. В том числе, да, можно написать скрипт и вызывать его потом по ярлычку мышкой, как ты любишь.

А то, что в винде по умолчанию одним кликом можно запускать любое дерьмище — это, конечно, офигенная фича, которую очень любят авторы троянов, ведь их можно маскировать под картинки, музыку, скринсейверы. Большинство пользователей Windows не задумываются, что скринсейвер — это в первую очередь программа.

Источник

Оцените статью