Ответ
Для компиляции Java-программы используется команда javac (Java Compiler). Она преобразует исходный код из файлов .java в байт-код (файлы .class).
Пример компиляции и запуска:
# Компиляция файла MyProgram.java
javac MyProgram.java
# Запуск скомпилированного класса (без указания расширения .class)
java MyProgram
Ключевые моменты:
- Для использования
javacнеобходим установленный JDK (Java Development Kit). - Имя файла
.javaдолжно совпадать с именем публичного класса, объявленного в нём. - Для проектов с пакетами или внешними библиотеками используются дополнительные флаги, такие как
-dдля указания выходного каталога и-cpили-classpathдля указания путей к зависимостям.
Ответ 18+ 🔞
Давай разберёмся, как этот ваш Java-код из текста в программу превращается, а то некоторые думают, что достаточно файлик .java на рабочий стол бросить и оно само запустится. Хуй там, блядь!
Вот смотри, есть у тебя файл MyProgram.java. Ты его написал, выстрадал, там класс публичный, всё как надо. Чтобы эта писанина ожила, её нужно скомпилировать. Для этого есть специальная утилита — javac, она же Java Compiler. Это как переводчик с человеческого языка на язык виртуальной машины, который называется байт-код. На выходе получаются файлы .class — это уже почти готовая программа.
Делается это просто, но есть нюансы, ёпта:
# Ты говоришь компилятору: "Вот этот файл, мудила, преврати во что-то работающее!"
javac MyProgram.java
# Если всё прошло без ошибок (а они будут, поверь), то в этой же папке появится MyProgram.class
# Чтобы его запустить, команда другая:
java MyProgram
Обрати внимание, когда запускаешь, расширение .class не указываешь! Сказал java MyProgram — и пошло-поехало. Если напишешь java MyProgram.class, то получишь ебанистическую ошибку, потому что система будет искать класс с именем class. Сам такой был, блядь.
А теперь, сука, ключевые моменты, без которых нихуя не получится:
- Чтобы команда
javacвообще работала, у тебя должен быть установлен не просто Java, а JDK (Java Development Kit). JRE (только для запуска) — это не катит, тут нужен именно комплект для разработки, со всеми этими компиляторами и прочей хуйнёй. - Имя файла
.javaдолжно в точности, блядь, совпадать с именем публичного класса внутри него. Написалpublic class SuperPuper— сохраняй файл какSuperPuper.java. Иначе компилятор тебе ебальник набьёт ошибкой. - Если проект сложнее "Hello World" (а они всегда сложнее), то начинается весёлая жизнь. Используешь пакеты? Готовь флаг
-d, чтобы указать, куда складывать скомпилированные.classфайлы, иначе они по всей папке раскидаются, как говно мамонтов. Подключил внешние библиотеки (.jar файлы)? Добро пожаловать в ад флагов-cpили-classpath, где ты вручную прописываешь все пути к зависимостям. А иначе программа просто не найдёт нужные классы и накроется медным тазом сClassNotFoundException.
Вот так вот, в двух словах. Кажется просто, а потом сидишь и думаешь: "Ну что за хуйня опять не работает?". А это, блядь, путь джависта.