Как запустить java программу с аргументами

Обновлено: 08.07.2024

Некоторое время я использовал Java, и я также понял и использовал некоторые параметры JVM (виртуальной машины Java), но я не разобрался со смыслом каждого параметра.

Как использовать Java

  1. java [options] classname [args]
  2. java [options] -jar filename [args]

options: Параметры командной строки, разделенные пробелом

classname: Имя класса для начала

filename: Имя пакета JAR (JAR)

args: main()Параметры метода, разделенные пробелами

Метод main () загруженного класса должен быть определен как public static, и возвращаемого значения нет, параметр представляет собой список строк

Если используется опция -jar, args - это класс, включенный в пакет JAR. Класс запуска должен быть указан через манифест Main-Class, например:

Options

Командная строка Java предоставляет следующие типы параметров

  • Стандартные варианты
  • Нестандартные варианты
  • Расширенные параметры запуска
  • Расширенные возможности JIT-компиляции
  • Расширенные возможности сборки мусора
  • Расширенные возможности юзабилити

(1) Стандартные опции поддерживаются всеми типами JVM. Стандартные параметры используются для рутинных операций, таких как просмотр версии и установка пути к классу.

(2) Нестандартные параметры обычно относятся к параметрам, характерным для виртуальной машины Java HotSpot, и не могут быть гарантированно поддержаны всеми типами JVM.-XНачиная.

(3) Расширенные параметры - это параметры для настройки определенных областей виртуальной машины Java HotSpot, и они не гарантированно поддерживаются всеми JVM. Когда этот тип выбран для использования,-XXНачиная. Для логических опций, используя+Указывает, что опция вступает в силу,- Чтобы указать, что параметры недействительны. в качестве-XX:+OptionNameОпция OptionName вступает в силу,-XX:-OptionNameОпция OptionName недействительна.

Стандартные варианты

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

Запустите приложение в 64-битной среде. Если 64-битная среда не инициализирована или не поддерживается, будет сообщено об ошибке. По умолчанию выполняется в 32-битной среде.

Показать справочную документацию

Показать каждый загруженный класс

Показать каждое событие сборки мусора

Показать текущую версию Java

-disableassertions[:[packagename]…|:classname] / -da[:[packagename]…|:classname]
Отключить утверждение (assert), вы можете указать пакет и класс, чтобы отключить утверждение.

-disablesystemassertions / -dsa
отключить все утверждения (assert)

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

Включить все утверждения (assert)

Выберите Java HotSpot Server VM. 64-битная версия неявно устанавливает -server.

Определите значения системных атрибутов. Переменная свойства представляет собой строку, представляющую имя свойства, а значение представляет собой заданное значение свойства.

Возьмем в качестве примера настройку кодировки файлов системы как utf-8:

Нестандартные варианты

Нестандартные параметры обычно относятся к параметрам, специфичным для виртуальной машины Java HotSpot. Перечислите несколько часто используемых вариантов.

Показать действительный-XСправочная информация для опций

Отключить фоновую компиляцию. По умолчанию JVM компилируется в фоновом режиме. Эта опция эквивалентна-XX:-BackgroundCompilation

Установите начальное значение и максимальный размер молодого поколения в куче. Единица байта, обычно используется K, M, G (без учета регистра)

Молодое поколение в основном размещает новые объекты, и эта область также является областью, где GC часто выполняется. Если локальная настройка мала, это может привести к частому второстепенному ГХ. Если настройка слишком велика, будет выполняться только полный ГХ, и каждый ГХ займет больше времени. Размер, рекомендуемый Oracle, составляет от 1 / 4-1 / 2 от общего размера кучи.

Возьмем для примера размер настройки 256 МБ:

​ -Xmn256m

Отличается от-XmnУстановите начальное значение и максимальное значение одновременно-XX:NewSizeНачальная настройка,-XX:MaxNewSizeУстановите максимальное значение.

Установите начальное значение кучи, которое должно быть кратно 1024 и больше 1 МБ.

Возьмите настройку начального значения 6 МБ в качестве примера:

​ -Xms6m

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

Укажите максимальный объем памяти приложения. Значение должно быть кратно 1024 и больше 2 МБ. Для сервис-ориентированных приложений,-Xmsи-XmxЧасто устанавливается на то же самое, поскольку причина включает механизм сбора мусора, если два параметра одинаковы, память, занимаемая приложением, не расширяется динамически.

Возьмите настройку максимального объема памяти 1G в качестве примера:

​ -Xmx1g

-XmxЭквивалент расширенных параметров-XX:MaxHeapSize

Установите размер стека потоков.

В качестве примера возьмем стек потоков размером 1024 КБ:

​ -Xss1024k

-XssЭквивалент расширенных параметров-XX:ThreadStackSize

Расширенные параметры запуска

Этот тип параметра управляет временем выполнения виртуальной машины Java HotSpot. Перечислите несколько часто используемых вариантов.

Включение этой опции приведет к тому, что вложения в инструментах JVM, таких как jcmd, jstack, jmap jinfo, будут недействительными. По умолчанию эта опция недопустима, и можно использовать классы инструментов, предоставляемые JVM.

Установите максимальный размер прямой памяти для размера. Для новых операций ввода-вывода вы можете использовать память вне кучи (прямую память) для создания объектов. Этот параметр задает размер этой области.

Возьмите пример установки максимальной прямой памяти в 1 МБ:

​ -XX:MaxDirectMemorySize=1m

Установите размер стека потока, который эквивалентен-XssПараметры.

Расширенные возможности юзабилити

Этот тип опции предоставляет возможность собирать системную информацию и отлаживать. Перечислите несколько часто используемых вариантов.

Включите эту опцию, когда она появитсяjava.lang.OutOfMemoryErrorКогда это ненормально, информация о куче Java будет выгружаться в файл в текущем каталоге с именем файла: java_pid [идентификатор процесса] .hprof-XX:HeapDumpPathУкажите путь к файлу дампа. Мы используем такие инструменты, как MemoryAnalyzer, для проверки состояния системы с помощью файла дампа, который по умолчанию отключен.

Укажите путь к файлу дампа, когда OutOfMemoryError является ненормальным, примеры следующие:

Задайте файл журнала. По умолчанию он в настоящее время называется hotspot.log. Как правило, мы будем использовать инструмент slf4j для установки журнала, но эта опция используется не очень часто.

Расширенные возможности сборки мусора

Этот тип опции используется виртуальной машиной Java HotSpot для управления сборкой мусора.

Включить оптимизацию кучи Java. Оптимизация кучи выполняется адаптивно на основе сервера. По умолчанию отключено.

Включить удаление класса при использованииCMS(the concurrent mark-sweep)Сборщик мусора. Включено по умолчанию. Если этот параметр отключен, установите значение-XX:-CMSClassUnloadingEnabled

Установите коэффициент старшего поколения. При запуске сборки мусора CMS это значение находится в диапазоне 0-100. Значением по умолчанию является -1.

Возьмем 70% старого поколения в качестве примера:

Установите количество потоков сборки мусора во время одновременной сборки мусора. Значением по умолчанию является количество действительных процессоров в JVM.

Возьмем количество потоков 2 в качестве примера:

Установите количество потоков сборки мусора параллельно GC. Значением по умолчанию является количество действительных процессоров в JVM.

Возьмем количество потоков 2 в качестве примера:

Включите эту опцию, позвоните в программуSystem.gc()Обработка недействительна. Эта опция по умолчанию отключена, что означает, что вызов отображается в программеSystem.gc()Выполнен.

Установите начальный размер памяти приложения, значение равно 0 или кратно 1024 и больше 1 МБ.

Возьмите пример установки начального объема памяти до 6 МБ:

Если установлено значение 0, начальное значение является суммой старого поколения и нового поколения.

Установите максимальное значение памяти приложения, которое кратно 1024 и больше 2 МБ. Это значение обычно совпадает с-XX:InitialHeapSizeНастройки одинаковы.

Эта опция эквивалентнаXmx

Установите соотношение молодого поколения к старому, по умолчанию 2.

Взять соотношение 1 в качестве примера:

Установите начальный размер кучи молодого поколения, что эквивалентно опции-Xmn

Вывести подробную информацию о каждом ГХ, по умолчанию отключено.

Каждый GC отображает отметку времени, которая по умолчанию отключена

Время задержки печати ГХ, по умолчанию отключено

Включение этой опции означает, что сборщик мусора в старом поколении использует сборщик мусора CMS. После включения этой опции,-XX:+UseParNewGCОпции автоматически включаются и не могут быть отключены. По умолчанию отключено. В JDK 8 старое поколение использовало комбинацию CMS, младшее поколение не использовало ParNew, а именно-XX:-UseParNewGCи-XX:+UseConCMarkSweepGCБыл заброшен

Включить G1 (сборщик мусора). G1 - это сборщик мусора серверного типа для многопроцессорных машин с большим объемом оперативной памяти. Цель состоит в том, чтобы уменьшить задержку GC и поддерживать пропускную способность. Рекомендуется использовать при установке кучи (> = 6 ГБ) большой. По умолчанию отключено.

Включите сборщик мусора Parallel Scavenge, сборщик мусора является многопроцессорной обработкой, целью является повышение пропускной способности. Когда эта опция включена, -XX: + UseParallelOldGC будет автоматически включен, если он не отключен. По умолчанию отключено.

Включите эту опцию, чтобы использовать сборщик мусора Parallel Garbage во время Full GC. По умолчанию отключено. и-XX:+UseParallelGCПарное использование.

Включите эту опцию, чтобы использовать параллельный поток сборщика мусора в молодом поколении. По умолчанию отключено. В JDK 8 молодое поколение использует ParNew, старое поколение не использует комбинацию CMS, а именно-XX:+UseParNewGCи-XX:-UseConCMarkSweepGCБыл заброшен

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

Наконец, для углубления понимания добавлена ​​объединенная картина молодых и старых сборщиков мусора.


ссылки

[1] jdk 1.8 справочная документация

[2] Глубокое понимание виртуальной машины Java: расширенные возможности и лучшие практики JVM

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

И так немного модифицируем нашу программу:

public class HelloWorld public static void main ( String [] args )

System . out . println ( "Hello World!" ) ;

//выводим количество аргументов заданных в командной строке
System . out . println ( "Всего аргументов в командной строке: " + args . length ) ;

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

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

H00001

Чтобы стало еще более понятно запустим ее с двумя аргументами:

H00002

Теперь у нас было передано два аргумента (слова One и Two).

Все передаваемые аргументы помещаются в массив строк args, а поле length содержит количество элементов массива (это упрощенное объяснение, но пока достаточно).

Запускать программу с аргументами можно прямо и из Eclipse. Делаем РАЗ и ДВА

H00003

Далее видим это

Обращаем внимание что в параметрах запуска стоит наш проект и его главный класс (содержащий метод main) и щелкаем по вкладке Arguments

H00005

Вводим аргументы и жмем кнопку Run и получаем на консоли Eclipse следующий вывод.

H00006

Теперь чуток еще усложним нашу программу, чтобы с аргументами стало все еще более понятно.

H00007

Теперь наша программа стала чуточку умней, она будет приветствовать переданные ей аргументы

Запустим ее из командной строки чтобы было понятнее

H00008

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

Я пытаюсь установить аргументы командной строки в проекте Netbeans 7.1 Java на Windows 7 64 бит.

Netbeans не передает Аргументы, которые я ему даю.

Я иду к Project --> Properties --> Run --> и введите аргументы рядом с "аргументами", однако аргументы не передаются программе. Как мне пройти мимо них?

Я предполагаю, что вы используете файл с помощью Run | Run File (или shift-F6), а не Run | Run Main Project . Файл справки NetBeans 7.1 (F1 - ваш друг!) состояния для параметра Arguments:

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

Я проверил это с помощью небольшого фрагмента кода:

я установил Run - > аргументы в x y z . Когда я бежал . файл сам по себе я не получил вывода. Когда я запускал проект, результат был:

Шаг 1: Создайте код Java, который может получить аргумент в качестве аргумента командной строки.

Шаг 2: в NetBeans (я использую 7.3) в окне вывода внизу нажмите желтую кнопку ("повторный запуск с другим параметром"). Откроется новое окно ("запустить целевое окно Ant").

Шаг 3: если аргумент, который вам нужно передать, является testArgument , затем здесь в этом окне передайте аргумент как application.args=testArgument .

это даст выход следующим образом то же окно вывода:

Если это проект Maven, то Netbeans запускает ваше приложение с помощью exec-maven-plugin таким образом, вам нужно добавить свои параметры в существующий exec.args свойство найдено в Запустить Maven диалог. Доступ к этому диалогу можно получить из выход окно, нажав на желтую двойную стрелку значок.

enter image description here

для проекта Maven с использованием NetBeans 8.x:

  1. клик Выполнить >> Конфигурация Проекта >> Настроить
  2. выберите действия
  3. выберите запустить файл через main ()
  4. установите пару имя / значение, чтобы включить аргументы.
  5. клик OK

пример пары имя/значение может выглядеть так:

затем запустите проект:

  1. откройте и сфокусируйте класс Java, который включает main(. ) .
  2. пресс F6 для запуска программы.

параметры командной строки должны появиться в окне Выполнить.

обратите внимание, что для получения формы значения с программой используйте System.getProperty() .

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

рассмотрим выше программу, в этой программе я хочу передать 3 no из командной строки, чтобы сделать это.

Шаг 1: Щелкните правой кнопкой мыши значок чашки и блюдца, вы увидите это окно 1

Шаг 2: Нажмите на свойства

Шаг 3: нажмите Run _> Arguments _> type three no, например. 32 98 16 затем нажмите кнопку OK. Plz добавляет пространство между двумя аргументами. Видеть здесь 2

Шаг 4: запустите программу с помощью F6.

для передачи аргументов для запуска команды проекта либо вы должны установить аргументы в панели свойств проекта Run, либо использовать новую команду, доступную после установки плагина, который говорит Run with Arguments

для передачи аргументов командной строки для файла Java, имеющего основной метод, просто щелкните правой кнопкой мыши на методе и выберите команду Run with Arguments, этого плагина

UPDATE (24 mar 2014) Этот плагин теперь доступен на портале плагинов NetBeans, что означает, что он может быть установлен из диалогового окна плагинов из доступных плагинов, показанных из плагинов сообщества, в IDE NetBeans 8.0

Run with Arguments plugin as shown in Plugin dialog box

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

Если вы используете MyEclipse и хотите добавить args перед запуском программы, сделайте следующее: 1.0) Выполнить - > Выполнить Конфигурацию 2.1) нажмите "аргументы" на правой панели 2.2) добавьте свои args в поле "Program Args", разделенное пробелом

Я пытаюсь установить аргументы командной строки в проекте Netbeans 7.1 Java в 64-разрядной версии Windows 7.

Netbeans не передает аргументы, которые я привожу.

Я перехожу к Project -> Properties -> Run -> и набираю аргументы рядом с "Аргументами", однако аргументы не передаются программе. Как мне их передать?

Я предполагаю, что вы запускаете файл, используя Run | Run File (или shift-F6), а не Run | Run Main Project . В файле справки NetBeans 7.1 (F1 - ваш друг!) Указано значение параметра Arguments:

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

Я подтвердил это с помощью небольшого фрагмента кода:

Я установил Run -> Arguments на x y z . Когда я запускал файл сам по себе, я ничего не получил. Когда я запустил проект, результат был:

Создайте код Java, который может принимать аргумент в качестве аргумента командной строки.

Запустите программу без аргументов (нажмите F6 ).

В окне "Вывод" внизу щелкните двойную желтую стрелку (или желтую кнопку), чтобы открыть диалоговое окно Выполнить.

Если аргумент, который вам нужно передать, это testArgument , то здесь, в этом окне, передайте аргумент как application.args=testArgument .

Это даст результат в следующем окне вывода:

Для Maven инструкции аналогичны, но вместо этого измените свойство exec.args :

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

Если это проект Maven, то Netbeans запускает ваше приложение, используя exec-maven-plugin, поэтому вам нужно добавить свои параметры в существующее свойство exec.args , найденное в Run Maven = диалог Доступ к этому диалоговому окну можно получить из окна Вывод, нажав желтую двойную стрелку.

enter image description here

Для проекта Maven, использующего NetBeans 8.x:

  1. Нажмите Выполнить >> Установить конфигурацию проекта >> Настроить
  2. Выберите Действия
  3. Выберите Запустить файл через main ()
  4. Установите пару имя/значение, чтобы включить аргументы.
  5. Нажмите ОК

Пример пары имя/значение может выглядеть следующим образом:

Затем запустите ваш проект:

  1. Откройте и сфокусируйте класс Java, который включает функцию main(. ) .
  2. Нажмите F6 запустить программу.

Параметры командной строки должны появиться в окне "Выполнить".

Обратите внимание, что для получения формы значения с программой используйте System.getProperty() .

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

Рассмотрим программу выше, в этой программе я хочу передать 3 нет из командной строки, чтобы сделать это.

Шаг 1: Щелкните правой кнопкой мыши на значке чашки и блюдца, вы увидите это окно 1

Шаг 2: Нажмите на Свойства

Шаг 3: Нажмите Выполнить _> Аргументы _> введите три нет, например. 32 98 16, затем нажмите OK. Пожалуйста, добавьте пробел между двумя аргументами. Смотрите здесь 2

Шаг 4: Запустите Программу с помощью F6.

В NetBeans IDE 8.0 вы можете использовать подключаемый модуль сообщества https://github.com/tusharvjoshi/nbrunwithargs , который позволит вам передавать аргументы при выполнении команды "Запустить проект" или "Запустить один файл". ,.

Для передачи аргументов в команду "Выполнить проект" необходимо либо задать аргументы на панели "Выполнить" в свойствах проекта, либо использовать новую команду, доступную после установки плагина с надписью "Выполнить с аргументами".

Для передачи аргументов командной строки в файл Java, имеющий метод main, просто щелкните метод правой кнопкой мыши и выберите команду "Выполнить с аргументами" этого плагина.

ОБНОВЛЕНИЕ (24 марта 2014 г.) Этот плагин теперь доступен на портале плагинов NetBeans, что означает, что его можно установить из диалогового окна плагинов из доступных плагинов, отображаемых из плагинов, добавленных сообществом, в NetBeans IDE 8.0

Run with Arguments plugin as shown in Plugin dialog box

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

Обратите внимание, что в Netbeans 8 в свойствах проекта нет панели "Выполнить".

Чтобы сделать то, что вы хотите, я просто добавляю следующую строку (пример установки локали) в файл свойств моего проекта:

Если вы используете MyEclipse и хотите добавить аргументы перед запуском программы, выполните следующие действия: 1.0) Выполнить -> Запустить конфигурацию 2.1) Нажмите "Аргументы" на правой панели 2.2) добавьте свои аргументы в поле "Аргументы программы", разделены пробелом

Читайте также: