Java linux командная строка

Содержание
  1. Запуск Java-программы из командной строки Linux
  2. 4 ответов
  3. Запустите приложение Java из командной строки
  4. 1. Обзор
  5. 2. Создайте приложение JAR
  6. 3. Аргументы командной строки Java
  7. 4. Запустите исполняемый файл JAR с аргументами
  8. 5. Запустите неисполняемую банку с аргументами
  9. Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать
  10. Отладка Java-приложений из командной строки
  11. Отладка Java с помощью утилиты «jdb»
  12. Команда jdb
  13. Пример Java приложения для отладки
  14. Подключение jdb к java-приложению
  15. Заключение
  16. Как запустить Java из командной строки в Linux
  17. Как запустить Java из командной строки
  18. Заключение
  19. Работа с Java в командной строке
  20. От простого к .
  21. Один файл
  22. Отделяем бинарные файлы от исходников
  23. Используем пакеты
  24. Если в программе несколько файлов
  25. Если удивляет результат
  26. Хорошо бы протестировать
  27. Создадим библиотеку
  28. Надо узнать, что у библиотеки внутри
  29. Лучше снабдить библиотеку документацией
  30. Можно подписать jar-архив
  31. Использование библиотеки
  32. Собираем программу
  33. Первый способ
  34. Второй способ
  35. Третий способ
  36. Запуск исполняемого jar-файла
  37. Как быть с приложениями JavaEE

Запуск Java-программы из командной строки Linux

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

Я могу скомпилировать его из командной строки с javac FileManagement/*.java , который создаст все классы в этой папке, но когда я пытаюсь java FileManagement.Main Он говорит :

исключение в потоке» main » java.ленг.Ошибке типа noclassdeffounderror: FileManagement / Main

дело в том, что я пробовал эту же процедуру в удаленный компьютер и он работает нормально. Он не работает на моем.

4 ответов

если Main класс находится в пакете под названием FileManagement , тогда попробуйте:

в родительской папке .

если Main класс не в пакете (пакет по умолчанию), то компакт-диск до FileManagement папка и попробуйте:

подробнее о classpath и как среда JRE найти классы:

Ребята, давайте разберемся в синтаксисе.

Если файл класса присутствует в текущем каталоге.

java-cp . именем

Если файл класса присутствует в каталоге. Перейдите в родительский каталог и введите ниже cmd.

java-cp . из dir1.директория dir2.dir3.именем

Если есть зависимость от внешних банок, то,

java-cp . / jarName1:./jarName2 именем

надеюсь, что это помогает.

(это ответ на поцелуй.)

Допустим, у вас есть несколько .файлы java в текущем каталоге:

Допустим, у каждого из них есть main() метод (так что это программы, а не libs), затем для их компиляции сделайте:

Это создаст столько подпапок, сколько «пакетов».файлы java связаны с. В моем случае все java-файлы, где внутри под тем же именем пакета packageName , поэтому с этим именем была создана только одна папка, поэтому Выполните каждое из них:

каково имя пакета вашего класса? Если нет имени пакета, то, скорее всего, решение такое:

Источник

Запустите приложение Java из командной строки

Узнайте, как создать и запустить приложение JAR с аргументами командной строки или без них

Автор: baeldung
Дата записи

1. Обзор

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

В этой статье мы сосредоточимся на сценарии автономного приложения. В дальнейшем мы будем называть его приложением JAR.

В этом уроке мы сначала узнаем, как создать приложение JAR. Позже мы узнаем, как запускать приложение JAR с аргументами командной строки или без них|/.

2. Создайте приложение JAR

Файл JAR может содержать один или несколько основных классов. Каждый основной класс является точкой входа приложения . Таким образом, теоретически файл JAR может содержать более одного приложения, но он должен содержать по крайней мере один основной класс, чтобы иметь возможность работать.

Файл JAR может иметь одну точку входа, установленную в файле манифеста . В этом случае файл JAR является исполняемым файлом JAR . Основной класс должен быть включен в этот файл JAR.

Прежде всего, давайте рассмотрим краткий пример того, как скомпилировать наши классы и создать исполняемый файл JAR с файлом манифеста:

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

Вот как мы создадим неисполняемую банку без файла манифеста:

3. Аргументы командной строки Java

Как и любое приложение, приложение JAR принимает любое количество аргументов, включая нулевые аргументы. Все зависит от потребностей приложения.

Это позволяет пользователю указать информацию о конфигурации при запуске приложения .

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

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

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

Читайте также:  Как установить образ линукса с флешки

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

Однако это не всегда относится к приложениям JAR.

Как мы уже обсуждали, точкой входа основного класса Java является метод main . Все аргументы являются String s и передаются в основной метод в виде массива String .

Тем не менее, внутри приложения мы можем преобразовать любой элемент массива String в другие типы данных, такие как char , int , double , их классы-оболочки, или другие соответствующие типы.

4. Запустите исполняемый файл JAR с аргументами

Давайте рассмотрим базовый синтаксис для запуска исполняемого файла JAR с аргументами:

java -jar jar-имя файла [args …]

Исполняемый файл JAR, созданный ранее, представляет собой простое приложение, которое просто выводит переданные аргументы. Мы можем запустить его с любым количеством аргументов. Ниже приведен пример с двумя аргументами:

Мы увидим следующий вывод в консоли:

Таким образом, при вызове исполняемого файла JAR нам не нужно указывать имя основного класса в командной строке . Мы просто добавляем наши аргументы после имени файла JAR. Если мы указываем имя класса после имени исполняемого файла JAR, оно просто становится первым аргументом для фактического основного класса.

В большинстве случаев приложение JAR-это исполняемый файл JAR. Исполняемый файл JAR может содержать не более одного основного класса, определенного в файле манифеста .

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

5. Запустите неисполняемую банку с аргументами

Чтобы запустить приложение в неисполняемом файле JAR, мы должны использовать опцию -cp вместо -jar . Мы будем использовать параметр -cp (сокращение от classpath), чтобы указать файл JAR, содержащий файл класса, который мы хотим выполнить:

java -cp jar-file-name main-class-name [args …]

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

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

Неисполняемый JAR, созданный ранее, содержит то же самое простое приложение. Мы можем бежать

В этом уроке мы изучили два способа запуска приложения JAR в командной строке с аргументами или без них.

Мы также продемонстрировали, что аргумент может содержать пробелы и специальные символы (если это разрешено оболочкой).

Как всегда, код для примеров доступен на GitHub .

Источник

Отладка Java-приложений из командной строки

Некоторые ошибки трудно воспроизвести на вашем персональном компьютере, но их легко воспроизвести на производственных или тестовых машинах. Это обычная ситуация, с которой часто сталкиваются профессиональные Java-разработчики. Для отладки таких проблем OpenJDK предоставляет два инструмента: remote debugging и jdb . Эта статья посвящена jdb .

Для приложений Java типичными производственными и тестовыми машинами являются серверы Linux без графического интерфейса, поэтому доступны только инструменты командной строки. И мы не можем использовать профессиональные IDE, такие как IntelliJ IDEA, Eclipse или Apache NetBeans IDE.

В таких сценариях мы можем использовать jdb . jdb — это отладчик командной строки, входящий в состав OpenJDK.

Это перевод руководства для начинающих. Очевидно эксперты все это знают и им не стоит тратит время на его чтение.

Отладка Java с помощью утилиты «jdb»

jdb расположена в каталоге jdk/bin. Она использует интерфейс отладки Java (JDI) для запуска и подключения к целевой JVM. Интерфейс отладки Java (JDI) предоставляет интерфейс языка программирования Java для отладки приложений на языке программирования Java. JDI является частью архитектуры отладчика платформы Java (Java Platform Debugger Architecture).

В этом разделе мы рассмотрим, как подключить jdb к java-приложению и начать отладку и мониторинг.

Команда jdb

Формат команды jdb:

Пример Java приложения для отладки

Ниже приведен пример Java класса, который мы собираемся отладить и попытаться понять различные доступные функции. Важно скомпилировать этот класс с параметром «-g» (javac -g Test.java), который генерирует всю отладочную информацию, включая локальные переменные. По умолчанию генерируется только информация о номере строки и исходном файле.

Подключение jdb к java-приложению

Приведенная ниже команда — это наиболее распространенный способ запуска приложения с отладчиком jdb. Здесь мы не передаем никаких параметров jdb, мы передали только имя класса, который не требует никаких аргументов:

Таким образом, мы запускаем выполнение основного класса «Test» аналогично тому, как мы запускаем выполнение основного класс в среде IDE. jdb останавливает JVM перед выполнением первой инструкции этого класса.

Читайте также:  Google для windows с ключом

Другой способ использовать команду 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 из командной строки в Linux

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

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

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

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

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

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

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

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

Чтобы проверить установку javac , введите:

Теперь напишите программу на Java в текстовом файле и сохраните ее с расширением .java .

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

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

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

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

Заключение

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

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

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

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

Источник

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

От простого к .

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

Один файл

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

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

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

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

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

Читайте также:  Что такое персональные файлы windows 10

Поместим наш класс в пакет с именем 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 Вам больше нравится?».

Источник

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