- Как скомпилировать файл .java в Ubuntu?
- Работа с Java в командной строке
- От простого к .
- Один файл
- Отделяем бинарные файлы от исходников
- Используем пакеты
- Если в программе несколько файлов
- Если удивляет результат
- Хорошо бы протестировать
- Создадим библиотеку
- Надо узнать, что у библиотеки внутри
- Лучше снабдить библиотеку документацией
- Можно подписать jar-архив
- Использование библиотеки
- Собираем программу
- Первый способ
- Второй способ
- Третий способ
- Запуск исполняемого jar-файла
- Как быть с приложениями JavaEE
- Как скомпилировать файл .java на Ubuntu?
- 4 ответа
- Как создать и выполнить файл .Jar в терминале Linux
- Как создать JAR-файл в Linux
Как скомпилировать файл .java в Ubuntu?
Как я могу скомпилировать файл .java?
Какие программы мне понадобятся? Если мне нужен Java JDK, мне также понадобится помощь в его установке. Я очень новичок в Ubuntu, поэтому для любой программы, которую мне нужно установить, мне потребуется руководство по их установке.
Чтобы скомпилировать файл, откройте свой терминал и введите
Чтобы запустить сгенерированный файл класса, используйте
Но для этого вам нужно установить Java JDK на ваш компьютер. Вы можете установить его с инструкциями в Как установить Java? ,
OpenJDK работает лучше всего для меня. Это просто, и я никогда не сталкивался с этой проблемой. Просто следуйте этим простым шагам:
Из Терминала установите открытый jdk
Напишите Java-программу и сохраните файл как filename.java
Теперь для компиляции используйте эту команду из терминала
Если все работает хорошо, то должен быть создан новый файл «filename.class».
Чтобы запустить только что скомпилированную программу, введите в терминале следующую команду:
Вы можете использовать любой текстовый редактор (например, Gedit),
замените имя файла тем именем, которое вы хотите
Вы должны находиться в том же каталоге, что и «текущий рабочий каталог» (полученный при запуске pwd ) во время выполнения команды из терминала.
Если, например, ваш файл my_file.java :
Ты хочешь сделать:
Однако общепринято называть классы и файлы одинаковыми именами.
Вам необходимо установить JDK, Java Development Kit. Ubuntu содержит метапакет default-jdk , который зависит от предпочитаемого в настоящее время JDK. Теперь это openjdk-6-jdk.
Чтобы скомпилировать файл Java в исполняемый файл .class, вы можете запустить
и запустить его
Это самый простой вариант использования, и в основном он не работает, потому что классы Java в основном зависят от других классов Java, размещенных в библиотеках.
Поэтому вы, вероятно, хотели бы использовать более сложные решения. Большинство текстовых редакторов поддерживают подсветку синтаксиса Java, например, jEdit , kate или vim , но они не решают проблему компиляции.
У вас есть другой вариант — вы можете установить полнофункциональную Java IDE. Ubuntu поставляется с двумя основными Java IDE с открытым исходным кодом — NetBeans и Eclipse .
Просто наберите sudo apt-get update , а затем sudo apt-get install openjdk-7-jdk для быстрой установки java7, тогда вы можете играть в игры с java 🙂
Для получения более подробной официальной документации по Java, пожалуйста, перейдите по этой ссылке .
Источник
Работа с 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
Ошибка возникла из-за того, что для компиляции нужны файлы с исходными кодами классов, которые используются (класс Calculator). Надо указать компилятору каталог с файлами с помощью ключа -sourcepath.
Компилируем
Если удивляет результат
Есть возможность запустить отладчик. Для этого существует jdb.
Сначала компилируем с ключом -g, чтобы у отладчика была информация.
Отладчик запускает свой внутренний терминал для ввода команд. Справку по последним можно вывести с помощью команды help.
Указываем точку прерывания на 9 строке в классе Calculator
Запускаем на выполнение.
Чтобы соориентироваться можно вывести кусок исходного кода, где в данный момент находится курссор.
Узнаем, что из себя представляет переменная а.
Выполним код в текущей строке и увидим, что sum стала равняться 2.
Поднимемся из класса Adder в вызвавший его класс Calculator.
Удаляем точку прерывания
Можно избежать захода в методы, используя команду next.
Проверяем значение выражения и завершаем выполнение.
Хорошо бы протестировать
Запускаем. В качестве разделителя нескольких путей в classpath в Windows используется ‘;’, в Linux — ‘:’. В консоли Cygwin не работают оба разделителя. Возможно, должен работать ‘;’, но он воспринимается как разделитель команд.
Создадим библиотеку
Класс Calculator оказался полезным и может быть использован во многих проектах. Перенесем всё, что касается класса Calculator в отдельный проект.
Измените также назавания пакетов в исходных текстах. В HelloWorld.java нужно будет добавить строку
Делаем архив jar
С помощью ключа -C мы запустили программу в каталоге bin.
Надо узнать, что у библиотеки внутри
Можно распаковать архив zip-распаковщиком и посмотреть, какие классы есть в библиотеке.
Информацию о любом классе можно получить с помощью дизассемблера javap.
Из результата видно, что класс содержит кроме пустого конструктора, ещё один метод sum, внутри которого в цикле вызывается метод add класса Adder. По завершении метода sum, вызывается Adder.getSum().
Без ключа -c программа выдаст только список переменных и методов (если использовать -private, то всех).
Лучше снабдить библиотеку документацией
Изменим для этого класс калькулятора.
Документацию можно создать следующей командой. При ошибке программа выдаст список возможных опций.
В результате получиться следующее
Можно подписать 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 Вам больше нравится?».
Источник
Как скомпилировать файл .java на Ubuntu?
Как я могу скомпилировать файл .java?
Какие программы мне понадобятся? Если мне нужен Java JDK, мне также понадобится помощь в установке этого. Я очень новичок в Ubuntu, поэтому любая программа, которую мне нужно установить, мне понадобится учебник по установке.
4 ответа
OpenJDK работает лучше всего для меня. Это просто, и я никогда с ним не сталкивался. Просто выполните следующие простые шаги:
From Terminal install open jdk Напишите программу java и сохраните файл как filename.java Теперь для компиляции используйте эту команду с терминала . Если все работает хорошо, тогда необходимо создать новый файл «filename.class». Для запуска вашей программы, которую вы только что скомпилировали, введите следующую команду в терминале:
Вы можете использовать любой текстовый редактор (например, gedit),
замените имя файла на любое имя, которое вы хотите
, вам нужно быть в том же каталоге, что и «настоящий рабочий каталог» (полученный при запуске pwd) во время выполнения команды с терминала. [!d14 ]
Если, например, ваш файл my_file.java:
Вы хотите сделать:
Тем не менее, это общепринятое соглашение, дающее классы и файлы с тем же именем.
Вам необходимо установить JDK, Java Development Kit. Ubuntu содержит metapackage default-jdk, который зависит от выбранного в настоящее время JDK. Теперь это openjdk-6-jdk.
Чтобы скомпилировать файл Java в исполняемый файл .class, вы можете запустить
и запустить его
Это самый простой случай использования, и в основном он не работает, потому что классы java в основном зависят от других классов Java, размещенных в библиотеках.
Таким образом, вы, вероятно, хотели бы использовать более сложные решения. Большинство текстовых редакторов поддерживают подсветку синтаксиса Java, например default-jdk , kate или vim, но они не решают проблему с компиляцией.
У вас есть другой вариант — вы можете установить полнофункциональная Java IDE. Ubuntu поставляется с главными Java IDE OpenSource — kate и Eclipse.
Просто введите sudo apt-get update, а затем sudo apt-get install openjdk-7-jdk для быстрой установки для java7, затем вы можете играть в игры с помощью java: -)
Для получения более подробной официальной документации по Java, перейдите по этой ссылке.
Источник
Как создать и выполнить файл .Jar в терминале Linux
JAR (Java ARchive) – это независимый от платформы формат файла, используемый для объединения многих файлов классов Java и связанных с ними метаданных и ресурсов, таких как текст, изображения и т. д., в один файл для распространения.
Он позволяет Java-средам эффективно разворачивать целое приложение в одном архиве и предоставляет множество преимуществ, таких как безопасность, его элементы могут быть сжаты, сокращено время загрузки, позволяетcz уплотнение пакетов и управление версиями, поддерживает переносимость.
Он также поддерживает упаковку для расширений.
В этой статье мы покажем, как создать простое приложение 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.
Источник