<<Предыдущий урок Список уроков Следующий урок>>
Компиляция и выполнение 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.
public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); } }
Идем в папку, куда среда разработки сохранила проект. Я работаю в IntelliJIDEA, и мой проект лежит в C:\Users\имя пользователя\IdeaProjects\название проекта\src. Находим там наш файл Main.java. Консоль вызывается так: щелкаем правой клавишей мыши с зажатой клавишей Shift на пустом месте в папке, где лежит файл нашей программы, и выбираем пункт контекстного меню “Открыть окно команд”.
Для того, чтобы скомпилировать его нужно набрать в консоли команду javac и в качестве параметра передать имя нашего файла:
javac Main.java
Эта команда вызовет компилятор, который создаст файл Main.class, содержащий скомпилированный код нашей java программы.
Чтобы запустить ее, нужно ввести команду java с именем класса (не файла!) в качестве параметра:
java Main.class //так неправильно
java Main //так правильно
Аргументы
В главном классе нашей программы есть метод public static void main(...)
, который в качестве аргумента принимает массив String[] args.
Массив строк в качестве аргумента можно передать в программу при запуске из командной строки .
Любой массив в Java имеет переменную длину, это число элементов в этом массиве.
Добавим такой код в класс Main.java:
public class Main {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
И чтобы скомпилировать и запустить программу с аргументами, пишем в консоль:
javac Main.java
java Main arg0 arg1 arg2
Упражнение
Создайте программу, которая выводит аргументы, переданные при запуске, в одну строку.
Когда ввожу команду javac Main.java, ошибок не выдает и объект с расширением class появляется, но когда пишу команду java Main пишет, что файл не найден. Как решить проблему?
Убедитесь, что каталог выбран правильно
код из примера один компилируется след. образом:
//
// 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 выдает ошибку
Выдает в командной строке вместо аргументов:
“[Ljava.lang.String;@15db9742”
В чем может быть проблема?
все решил, забыл одну фигурную скобку)) странно, что без нее эклипс скомпилировать дал
Добрый день.
У меня проблема такая:
пользуюсь Андроид Студио, создала класс с выводом строки. В командной строке скомпилировала программу (javac Main.java), после чего файл класса появился. Теперь пробую запустить программу, но выходит ошибка “Error: Could not find or load main class Main”. После поиска решения проблемы нашла пример создания программы в блокноте. Создала по примеру – программа запускается, а моя, созданная в Андроид студии – нет. Потом открыла свой java файл в блокноте, удалила строку с описанием пакета “package com.example.name.f123;” – только тогда запустилось.
Получается, что созданные в студии классы не запустить из командной строки? Может, надо сделать какие-нибудь настройки в самой студии, чтобы не править постоянно файлы класса?
Скачайте IntelliJIdea для java
//Main.java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
System.out.println(Arrays.toString(args));
}
}
Решение проблемы с «javac/java не является внутренней или внешней командой, исполняемой программой или пакетным файлом»:
«Панель управления» > «Система и безопасность» > «Система»
Далее в левой части окна «Дополнительные параметры системы» > вкладка «Дополнительно», внизу окна «Переменные среды».
В части «Системные переменные» ищем переменную «Path», выделяем её и кликаем по «Изменить…».
В открывшемся окне «Создать» и указываем путь к директории bin из JDK (по умолчанию: C:\Program Files\Java\jdk1.8.0_92\bin)
После кликаем по всем кнопками «OK». После этой операции командная строка будет понимать где находятся исполняемые файлы JDK.
Для того, чтобы работать из консоли ну нужно изменить переменную окружения path. В этой переменной хранятся пути записанные через точку с запятой, в которых оболочка(консоль) будет искать исполняемые файлы(*exe, *.bat, и другие). Допишите в эту переменную ;C:Program FilesJavajdk1.6.0_17bin.
подскажите как скомпилировать в android studio?
Странно у меня все установлено, но проблема возникает:
при запуске в командной строке >javac Main.java
ответ системы:
“javac” не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Попробуйте перегрузиться
Вам нужно попасть на доп. настройки системы:
ПКМ по “Мой Компьютер” – “Свойства”, дальше “Дополнительные параметры системы” (в 7-ке это – нижняя кнопка в левой панели экрана)).
Вкладка “Дополнительно” – “Переменные среды…” (внизу вкладки).
В списке переменных добавляете переменную PATH и указываете путь к папке bin внутри папки jdk.
Например, вот так: C:\Program Files\Java\jdk1.8.0_151\bin
Перезапускаете консоль – всё работает.