как запустить приложение java через командную строку
#8. Компиляция и выполнение java программы с командной строки
Компиляция и выполнение java программы
Продолжаем курс программирования java для android-разработчиков. Данный урок научит вас запускать java программы из командной строки, для общего понимания процесса компиляции и запуска программ на языке java.
После создания простого приложения, которое выводит что-то на экран, вы должны компилировать ваш код и запустить его.
Независимо от того, какую операционную систему вы используете, Linux, Mac или Windows, если на вашем компьютере установлен JDK (Java Development Kit), вы можете в консоли набрать следующие команды чтобы скомпилировать и запустить программу:
В первом случае будет вызван компилятор javac.exe, а во втором случае — запускалка java.exe, которая стартует нашу программу. Эти файлы лежат в папке bin вашего JDK.
Рассмотрим на примере. Вспомним код из первого урока — создадим файл с названием Main.java.
Идем в папку, куда среда разработки сохранила проект. Я работаю в IntelliJIDEA, и мой проект лежит в C:\Users\имя пользователя\IdeaProjects\название проекта\src. Находим там наш файл Main.java. Консоль вызывается так: щелкаем правой клавишей мыши с зажатой клавишей Shift на пустом месте в папке, где лежит файл нашей программы, и выбираем пункт контекстного меню «Открыть окно команд».
Для того, чтобы скомпилировать его нужно набрать в консоли команду javac и в качестве параметра передать имя нашего файла:
Эта команда вызовет компилятор, который создаст файл Main.class, содержащий скомпилированный код нашей java программы.
Чтобы запустить ее, нужно ввести команду java с именем класса (не файла!) в качестве параметра:
Как запустить программу Java из командной строки в Windows?
Я пытаюсь выполнить программу Java из командной строки в Windows. Вот мой код:
10 ответов
предположим, что ваш файл находится в\C:\mywork
Команда «Выполнить» Строке
это делает C:\mywork текущий каталог.
отображает содержимое каталога. Вы должны увидеть filenamehere.java среди файлов.
это сообщает системе, где найти программы JDK.
это работает javac.exe, компилятор. Вы не должны видеть ничего, кроме следующая системная подсказка.
javac создал filenamehere.файл класса. Вы должны увидеть filenamehere.java и filenamehere.класс среди файлов.
это запускает интерпретатор Java. Затем вы должны увидеть свою программу выход.
если система не может найти javac, проверьте команду set path. Если и javac работает, но вы получаете ошибки, проверьте свой текст Java. Если программа компилирует, но вы получаете исключение, проверка орфографии и капитализация в имени файла и имени класса и java Командование адского мира. Java чувствительна к регистру!
чтобы завершить ответ:
скомпилируйте файл Java в *.файл класса
выполнение файла Java
создание исполняемого файла
С внешним файлом манифеста:
создайте файл манифеста say-MANIFEST.mf
исполняемый файл по записи Точка:
для запуска файла Jar
Complile файл Java для создания класса:
выполнить созданный класс:
скомпилируйте его обычным способом:
но чтобы запустить его, вам нужно дать имя пакета, а затем имя класса java:
теперь вам нужно открыть cmd и установить путь к вам A.java файл перед компиляцией. вы можете обратиться этой для этого.
затем вы можете скомпилировать файл с помощью команды
затем запустите его с помощью
вот так вы компилируете и запускаете программу java в cmd. Вы также можете пройти через эти материал это Java в уроках глубины. Много вещей, которые вам нужно понять в Java, покрыты там для начинающих.
вы можете скомпилировать любой источник java с помощью javac в командной строке; например, javac CopyFile.Ява. Для запуска: Java CopyFile. Вы также можете скомпилировать все файлы java с помощью javac *.java, пока они находятся в одном каталоге
Если у вас возникла проблема с «не удалось найти или загрузить основной класс», у вас может не быть JRE в свой путь. Взгляните на этот вопрос: не удалось найти или загрузить основной класс
предполагая, что файл называется » CopyFile.Ява», сделайте следующее:
первая строка компилирует исходный код в исполняемый байт-код. Вторая строка выполняет его, сначала добавляя текущий каталог в путь к классу (на всякий случай).
в Windows 7 мне пришлось сделать следующее:
быстрый способ
долгая дорога
Это, вероятно, ломается при обновлении установки JDK, но теперь у вас есть доступ ко всем инструментам командной строки.
следуйте комментариям выше о том, как скомпилировать файл («javac MyFile.java «затем» java MyFile»)https://stackoverflow.com/a/33149828/194872
ШАГ 1: СНАЧАЛА ОТКРОЙТЕ КОМАНДНУЮ СТРОКУ, ГДЕ НАХОДИТСЯ ВАШ ФАЙЛ. (щелкните правой кнопкой мыши при нажатии shift)
ШАГ 2: ЗАТЕМ ИСПОЛЬЗУЙТЕ СЛЕДУЮЩИЕ КОМАНДЫ ДЛЯ ВЫПОЛНЕНИЯ. (допустим, имя файла и класса, которые будут выполняться, называется Student.java) пример программы находится в фоновом режиме изображения.
Отладка Java-приложений из командной строки
Для приложений Java типичными производственными и тестовыми машинами являются серверы Linux без графического интерфейса, поэтому доступны только инструменты командной строки. И мы не можем использовать профессиональные IDE, такие как IntelliJ IDEA, Eclipse или Apache NetBeans IDE.
Это перевод руководства для начинающих. Очевидно эксперты все это знают и им не стоит тратит время на его чтение.
Отладка Java с помощью утилиты «jdb»
jdb расположена в каталоге jdk/bin. Она использует интерфейс отладки Java (JDI) для запуска и подключения к целевой JVM. Интерфейс отладки Java (JDI) предоставляет интерфейс языка программирования Java для отладки приложений на языке программирования Java. JDI является частью архитектуры отладчика платформы Java (Java Platform Debugger Architecture).
В этом разделе мы рассмотрим, как подключить jdb к java-приложению и начать отладку и мониторинг.
Команда jdb
Формат команды jdb:
Пример Java приложения для отладки
Подключение jdb к java-приложению
Таким образом, мы запускаем выполнение основного класса «Test» аналогично тому, как мы запускаем выполнение основного класс в среде IDE. jdb останавливает JVM перед выполнением первой инструкции этого класса.
Другой способ использовать команду jdb для подключения ее к уже запущенной JVM. Синтаксис для запуска JVM с портом отладчика:
Чтобы подключить jdb к этому удаленному jvm, используйте синтаксис ниже:
В этой статье мы не будем подробно рассматривать удаленную отладку.
Отладка и мониторинг
Ниже приводится команда для присоединения jdb к Java-программе Test:
Установите точку останова в строке 5, используя команду «stop», как показано ниже:
Запустите выполнение основного класса приложения с помощью команды «run»:
Выполнить текущую строку с помощью команды «step»:
Выполнить текущую строку с помощью команды «step»:
Печать локальной переменной i с помощью команды «print»:
Печать всех локальных переменных в текущем фрейме стека с использованием команды «locals»:
Выгрузите стек потока, используя команду «where»:
Выдать список потоков в запущенном приложении, используя команду «threads»:
Продолжить выполнение с точки останова, используя команду cont :
Все доступные команды jdb можно получить используя команду «help»:
Поддерживается весьма стандартный синтаксис команд.
Команды запуска могут быть помещены в файлы «jdb.ini» или «.jdbrc» в каталогах user.home или user.dir.
Заключение
OpenJDK предоставляет множество замечательных инструментов для устранения неполадок и диагностики Java-приложений. Эти инструменты помогут вам быстро исправить проблемы в рабочем приложении. jdb может быть большим подспорьем, когда нет другого способа, кроме отладки приложения, а ваша любимая IDE недоступна. Знание таких функций поможет вам улучшить задание Java.
Чтобы помочь вам, автор статьи написал электронную книгу 5 steps to Best Java Jobs. Вы можете загрузить это пошаговое руководство бесплатно!
Запустите приложение Java из командной строки
Узнайте, как создать и запустить приложение JAR с аргументами командной строки или без них
1. Обзор
Как правило, каждое значимое приложение включает в себя один или несколько файлов JAR в качестве зависимостей. Однако бывают случаи, когда сам файл JAR представляет собой автономное приложение или веб-приложение.
В этой статье мы сосредоточимся на сценарии автономного приложения. В дальнейшем мы будем называть его приложением JAR.
В этом уроке мы сначала узнаем, как создать приложение JAR. Позже мы узнаем, как запускать приложение JAR с аргументами командной строки или без них|/.
2. Создайте приложение JAR
Прежде всего, давайте рассмотрим краткий пример того, как скомпилировать наши классы и создать исполняемый файл JAR с файлом манифеста:
Вот как мы создадим неисполняемую банку без файла манифеста:
3. Аргументы командной строки Java
Как и любое приложение, приложение JAR принимает любое количество аргументов, включая нулевые аргументы. Все зависит от потребностей приложения.
В результате приложение может избежать жестко закодированных значений и по-прежнему может обрабатывать множество различных вариантов использования.
Аргумент может содержать любые буквенно-цифровые символы, символы юникода и, возможно, некоторые специальные символы, разрешенные оболочкой, например”@”.
Обычно для типичного приложения Java при вызове приложения пользователь вводит аргументы командной строки после имени класса.
Однако это не всегда относится к приложениям JAR.
4. Запустите исполняемый файл JAR с аргументами
Давайте рассмотрим базовый синтаксис для запуска исполняемого файла JAR с аргументами:
Исполняемый файл JAR, созданный ранее, представляет собой простое приложение, которое просто выводит переданные аргументы. Мы можем запустить его с любым количеством аргументов. Ниже приведен пример с двумя аргументами:
Мы увидим следующий вывод в консоли:
Следовательно, другие приложения в том же исполняемом файле JAR не могут быть установлены в файле манифеста, но мы все равно можем запускать их из командной строки, как и для неисполняемого файла JAR. Как именно, мы увидим в следующем разделе.
5. Запустите неисполняемую банку с аргументами
Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать
Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать
Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать
В этом уроке мы изучили два способа запуска приложения JAR в командной строке с аргументами или без них.
Мы также продемонстрировали, что аргумент может содержать пробелы и специальные символы (если это разрешено оболочкой).
Работа с 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.
Лучше снабдить библиотеку документацией
Изменим для этого класс калькулятора.
Документацию можно создать следующей командой. При ошибке программа выдаст список возможных опций.
В результате получиться следующее
Можно подписать 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 Вам больше нравится?».