#8. Компиляция и выполнение java программы с командной строки

<<Предыдущий урок   Список уроков   Следующий урок>>

Компиляция и выполнение java программы

Продолжаем курс программирования java для android-разработчиков. Данный урок научит вас запускать java программы из командной строки, для общего понимания процесса компиляции и запуска программ на языке java.

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

Независимо от того, какую операционную систему вы используете, Linux, Mac или Windows, если на вашем компьютере установлен JDK (Java Development Kit), вы можете в консоли набрать следующие команды чтобы скомпилировать и запустить программу:

  • javac (или  javac.exe)
  • java (или  java.exe)

В первом случае будет вызван компилятор javac.exe, а во втором случае — запускалка java.exe, которая стартует нашу программу. Эти файлы лежат в папке bin  вашего JDK.

Рассмотрим на примере. Вспомним код из первого урока — создадим файл с названием Main.java.

Идем в папку, куда среда  разработки сохранила проект. Я работаю в IntelliJIDEA, и мой проект лежит в C:\Users\имя пользователя\IdeaProjects\название проекта\src. Находим там наш файл Main.java. Консоль вызывается так: щелкаем правой клавишей мыши с зажатой клавишей Shift на пустом месте в папке, где лежит файл нашей программы, и выбираем пункт контекстного меню «Открыть окно команд».
Для того, чтобы скомпилировать его нужно набрать в консоли команду javac и в качестве параметра передать имя нашего файла:

Эта команда вызовет компилятор, который создаст файл Main.class, содержащий скомпилированный код нашей java программы.

Чтобы запустить ее, нужно ввести команду java с именем класса (не файла!) в качестве параметра:

Аргументы

В главном классе нашей программы есть метод public static void main(...), который в качестве аргумента принимает массив String[] args.

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

Любой массив в Java имеет переменную длину, это число элементов в этом массиве.

Добавим такой код в класс Main.java:

И чтобы скомпилировать и запустить программу с аргументами, пишем в консоль:

Упражнение

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

Дополнительное чтение:


<<Предыдущий урок   Список уроков   Следующий урок>>

Комментарии: 18
  1. Когда ввожу команду javac Main.java, ошибок не выдает и объект с расширением class появляется, но когда пишу команду java Main пишет, что файл не найден. Как решить проблему?

    1. admin (автор)

      Убедитесь, что каталог выбран правильно

  2. timzyed

    код из примера один компилируется след. образом:

    //
    // Source code recreated from a .class file by IntelliJ IDEA
    // (powered by Fernflower decompiler)
    //

    public class Main {
    public Main() {
    }

    public static void Main(String[] var0) {
    System.out.println(«Hello, World!»);
    }
    }

    команда java main выдает ошибку

  3. Выдает в командной строке вместо аргументов:
    «[Ljava.lang.String;@15db9742»
    В чем может быть проблема?

    1. все решил, забыл одну фигурную скобку)) странно, что без нее эклипс скомпилировать дал

  4. Таня

    Добрый день.
    У меня проблема такая:
    пользуюсь Андроид Студио, создала класс с выводом строки. В командной строке скомпилировала программу (javac Main.java), после чего файл класса появился. Теперь пробую запустить программу, но выходит ошибка «Error: Could not find or load main class Main». После поиска решения проблемы нашла пример создания программы в блокноте. Создала по примеру — программа запускается, а моя, созданная в Андроид студии — нет. Потом открыла свой java файл в блокноте, удалила строку с описанием пакета «package com.example.name.f123;» — только тогда запустилось.
    Получается, что созданные в студии классы не запустить из командной строки? Может, надо сделать какие-нибудь настройки в самой студии, чтобы не править постоянно файлы класса?

    1. admin (автор)

      Скачайте IntelliJIdea для java

  5. Serge

    //Main.java

    import java.util.Arrays;

    public class Main {

    public static void main(String[] args) {
    System.out.println(Arrays.toString(args));

    }
    }

  6. Serge

    Решение проблемы с «javac/java не является внутренней или внешней командой, исполняемой программой или пакетным файлом»:

    «Панель управления» > «Система и безопасность» > «Система»

    Далее в левой части окна «Дополнительные параметры системы» > вкладка «Дополнительно», внизу окна «Переменные среды».

    В части «Системные переменные» ищем переменную «Path», выделяем её и кликаем по «Изменить…».

    В открывшемся окне «Создать» и указываем путь к директории bin из JDK (по умолчанию: C:\Program Files\Java\jdk1.8.0_92\bin)

    После кликаем по всем кнопками «OK». После этой операции командная строка будет понимать где находятся исполняемые файлы JDK.

  7. Виталий Непочатов

    Для того, чтобы работать из консоли ну нужно изменить переменную окружения path. В этой переменной хранятся пути записанные через точку с запятой, в которых оболочка(консоль) будет искать исполняемые файлы(*exe, *.bat, и другие). Допишите в эту переменную ;C:Program FilesJavajdk1.6.0_17bin.

  8. Алексей Н.

    подскажите как скомпилировать в android studio?

  9. Vsdim

    Странно у меня все установлено, но проблема возникает:
    при запуске в командной строке >javac Main.java
    ответ системы:
    «javac» не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

    1. admin (автор)

      Попробуйте перегрузиться

    2. Papashkin

      Вам нужно попасть на доп. настройки системы:
      ПКМ по «Мой Компьютер» — «Свойства», дальше «Дополнительные параметры системы» (в 7-ке это — нижняя кнопка в левой панели экрана)).

      Вкладка «Дополнительно» — «Переменные среды…» (внизу вкладки).

      В списке переменных добавляете переменную PATH и указываете путь к папке bin внутри папки jdk.
      Например, вот так: C:\Program Files\Java\jdk1.8.0_151\bin

      Перезапускаете консоль — всё работает.

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