запуск java приложения linux

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

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

Дальше открываем файл 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 в Linux

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

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

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

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

sudo apt install openjdk-8-jre

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

sudo apt install openjdk-8-jdk-headless

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

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

public class Main <
public static void main(String[] args) <
System.out.println(» Losst test app! «);
>
>

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

Затем скомпилируем наше приложение в jar-файл:

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

Если мы дадим программе право на выполнение:

И попытаемся её запустить, то получим ошибку:

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

Чтобы её исправить, нам понадобиться пакет jarwrapper:

sudo apt install jarwrapper

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

Теперь можно запускать java в Linux по щелчку мыши или просто командой.

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

Выводы

В этой небольшой статье мы рассмотрели, как запустить jar Linux с помощью java-машины, а также как упростить команду запуска. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

Как запустить Java из командной строки в Linux

Главное меню » Программирование » Java » Как запустить Java из командной строки в Linux

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

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

Как запустить Java из командной строки

Чтобы запустить java-программу в Linux, нам нужно проверить, доступен ли Java Development Kit (JDK) в системе и его версию.

Чтобы подтвердить это, введите следующую команду:

( Инструмент командной строки Javac используется для компиляции программ Java)

Инструмент командной строки Javac недоступен в моей системе. У нас есть несколько команд для его загрузки, как указано на изображении выше.

Давайте воспользуемся командой default-jdk, чтобы получить это:

Предположим, я создал файл с именем « testing.java » и написал в нем простую программу:

(Имейте в виду, что имя вашего класса должно совпадать с именем файла)

Скомпилируйте файл testing.java на терминале с помощью команды javac :

Теперь запустите программу Java, вызвав ее имя класса в терминале:

Заключение

Java – это язык высокого уровня современной эпохи, поддерживаемый Java Development Kit (JDK). JDK – это пакет, который помогает запускать java и используется для разработки пакетов программного обеспечения.

Язык Java имеет простой синтаксис, который легко освоить новичкам, и это один из наиболее используемых объектно-ориентированных языков программирования.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

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

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

Что такое Java

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

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

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

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

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

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

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

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

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

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

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

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

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

Если Java установлена, то вы получите информацию о том, какие компоненты Java установлены в системе.
запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

Установка 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 для продолжения.

запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

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

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

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

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

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

Как удалить Java

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

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

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

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

Заключение

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

Источник

Работа с Java в командной строке

Каждая программа обычно содержится в отдельном каталоге. Я придерживаюсь правила создавать в этом каталоге по крайней мере две папки: src и bin. В первой содержатся исходные коды, во второй — результат компиляции. В данных папках будет структура каталогов, зависящая от пакетов.

Один файл

Можно сделать и без лишних папок.
Берем сам файл HelloWorld.java.
Переходим в каталог, где лежит данный файл, и выполняем команды.
В данной папке появится файл HelloWorld.class. Значит программа скомпилирована. Чтобы запустить

Отделяем бинарные файлы от исходников

Теперь сделаем тоже самое, но с каталогами. Создадим каталог HelloWorld и в нем две папки src и bin.
Компилируем
Здесь мы указали, что бинарные файлы будут сохраняться в отдельную папку bin и не путаться с исходниками.

Используем пакеты

А то, вдруг, программа перестанет быть просто HelloWorld-ом. Пакетам лучше давать понятное и уникальное имя. Это позволит добавить данную программу в другой проект без конфликта имен. Прочитав некоторые статьи, можно подумать, что для имени пакета обязательно нужен домен. Это не так. Домены — это удобный способ добиться уникальности. Если своего домена нет, воспользуйтесь аккаунтом на сайте (например, ru.habrahabr.mylogin). Он будет уникальным. Учтите, что имена пакетов должны быть в нижнем регистре. И избегайте использования спецсимволов. Проблемы возникают из-за разных платформ и файловых систем.

Поместим наш класс в пакет с именем com.qwertovsky.helloworld. Для этого добавим в начало файла строчку
В каталоге src создадим дополнительные каталоги, чтобы путь к файлу выглядел так: src/com/qwertovsky/helloworld/HelloWorld.java.
Компилируем
В каталоге bin автоматически создастся структура каталогов как и в src.

Если в программе несколько файлов

HelloWorld.java
Calculator.java
Adder.java

Если удивляет результат

Отладчик запускает свой внутренний терминал для ввода команд. Справку по последним можно вывести с помощью команды help.
Указываем точку прерывания на 9 строке в классе Calculator

Запускаем на выполнение.

Чтобы соориентироваться можно вывести кусок исходного кода, где в данный момент находится курссор.

Узнаем, что из себя представляет переменная а.

Выполним код в текущей строке и увидим, что sum стала равняться 2.

Поднимемся из класса Adder в вызвавший его класс Calculator.

Удаляем точку прерывания

Можно избежать захода в методы, используя команду next.

Проверяем значение выражения и завершаем выполнение.

Хорошо бы протестировать

Запускаем. В качестве разделителя нескольких путей в classpath в Windows используется ‘;’, в Linux — ‘:’. В консоли Cygwin не работают оба разделителя. Возможно, должен работать ‘;’, но он воспринимается как разделитель команд.

Создадим библиотеку

Класс Calculator оказался полезным и может быть использован во многих проектах. Перенесем всё, что касается класса Calculator в отдельный проект.

Измените также назавания пакетов в исходных текстах. В HelloWorld.java нужно будет добавить строку

Надо узнать, что у библиотеки внутри

Можно распаковать архив zip-распаковщиком и посмотреть, какие классы есть в библиотеке.
Информацию о любом классе можно получить с помощью дизассемблера javap.

Лучше снабдить библиотеку документацией

Изменим для этого класс калькулятора.

Документацию можно создать следующей командой. При ошибке программа выдаст список возможных опций.

В результате получиться следующее
запуск java приложения linux. Смотреть фото запуск java приложения linux. Смотреть картинку запуск java приложения linux. Картинка про запуск java приложения linux. Фото запуск java приложения linux

Можно подписать jar-архив

Если требуется подписать свою библиотеку цифровой подписью, на помощь придут keytool и jarsigner.
Генерируем подпись.

Генерируем Certificate Signing Request (CSR)

Содержимое полученного файла отправляем в центр сертификации. От центра сертификации получаем сертификат. Сохраняем его в файле (например, qwertokey.cer) и импортируем в хранилище

Файл qwertokey.cer отправляем всем, кто хочет проверить архив. Проверяется он так

Использование библиотеки

Есть программа HelloWorld, которая использует библиотечный класс Calculator. Чтобы скомпилировать и запустить программу, нужно присоединить библиотеку.
Компилируем

Собираем программу

Это можно сделать по-разному.

Первый способ

Здесь есть тонкости.
В строке

не должно быть пробелов в конце.
Вторая тонкость описана в [3]: в этой же строке должен стоять перенос на следующую строку. Это если манифест помещается в архив сторонним архиватором.
Программа jar не включит в манифест последнюю строку из манифеста, если в конце не стоит перенос строки.
Ещё момент: в манифесте не должно быть пустых строк между строками. Будет выдана ошибка «java.io.IOException: invalid manifest format».

При использовании команды echo надо следить только за пробелом в конце строки с main-class.

Второй способ

В данном способе избегаем ошибки с пробелом в main-class.

Третий способ

Включили код нужной библиотеки в исполняемый файл.

Запуск исполняемого jar-файла

Файл calculator.jar исполняемым не является. А вот helloworld.jar можно запустить.
Если архив был создан первыми двумя способами, то рядом с ним в одном каталоге должна находится папка lib с файлом calculator.jar. Такие ограничения из-за того, что в манифесте в class-path указан путь относительно исполняемого файла.

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

Как быть с приложениями JavaEE

Аналогично. Только библиотеки для компиляции нужно брать у сервера приложений, который используется. Если я использую JBoss, то для компиляции сервлета мне нужно будет выполнить примерно следующее

Структура архива JavaEE-приложения должна соответствовать определенному формату. Например

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

Надеюсь, данная статья станет для кого-нибудь шпаргалкой для работы с Java в командной строке. Данные навыки помогут понять содержание и смысл Ant-скриптов и ответить на собеседовании на более каверзные вопросы, чем «Какая IDE Вам больше нравится?».

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *