Компиляция нескольких классов java

Компиляция файлов Java *.class с помощью javac

В этом руководстве будет представлен инструмент javac и описано, как использовать его для компиляции исходных файлов Java в файлы классов.

Мы начнем с краткого описания команды javac , а затем более подробно рассмотрим этот инструмент, рассмотрев его различные параметры.

2. Команда javac

Мы можем указать параметры и исходные файлы при выполнении инструмента javac :

 javac [options] [source-files] 

Где [options] обозначает параметры, управляющие работой инструмента, а [source-files] указывает один или несколько исходных файлов, которые необходимо скомпилировать.

Все опции действительно необязательны. Исходные файлы могут быть напрямую указаны в качестве аргументов для команды javac или сохранены в файле аргументов, на который ссылаются, как описано ниже. Обратите внимание, что исходные файлы должны располагаться в иерархии каталогов, соответствующей полным именам содержащихся в них типов .

Опции javac делятся на три группы: стандартные, кросс-компиляция и дополнительные. В этой статье мы сосредоточимся на стандартных и дополнительных опциях.

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

3. Определение типа

Давайте начнем с представления класса, который мы собираемся использовать для демонстрации параметров javac :

 public class Data    ListString> textList = new ArrayList();    public void addText(String text)    textList.add(text);   >    public List getTextList()    return this.textList;   >   > 

Исходный код размещен в файле com/foreach/javac/Data.java .

Обратите внимание, что в этой статье мы используем разделители файлов *nix; на машинах Windows мы должны использовать обратную косую черту (‘ \’ ) вместо прямой косой черты (‘ /’ ).

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

Одной из наиболее часто используемых стандартных опций команды javac является -d , указывающая каталог назначения для сгенерированных файлов классов . Если тип не является частью пакета по умолчанию, создается структура каталогов, отражающая имя пакета, чтобы сохранить файл класса этого типа.

Давайте выполним следующую команду в каталоге, содержащем структуру, представленную в предыдущем разделе:

 javac -d javac-target com/foreach/javac/Data.java 

Компилятор javac создаст файл класса javac-target/com/foreach/javac/Data.class . Обратите внимание, что в некоторых системах javac не создает автоматически целевой каталог, которым в данном случае является javac-target . Поэтому нам может потребоваться сделать это вручную.

Вот еще несколько часто используемых опций:

  • -cp (или -classpath , –class -path ) — указывает, где можно найти типы, необходимые для компиляции наших исходных файлов. Если этот параметр отсутствует и переменная среды CLASSPATH не задана, вместо нее используется текущий рабочий каталог (как в примере выше).
  • -p (или —module-path ) – указывает расположение необходимых модулей приложения. Эта опция применима только к Java 9 и более поздним версиям — пожалуйста, обратитесь к этому руководству за руководством по модульной системе Java 9.

Если мы хотим знать, что происходит в процессе компиляции, например, какие классы загружаются, а какие компилируются, мы можем применить опцию -verbose .

Последним стандартным вариантом, который мы рассмотрим, является файл аргументов. Вместо того, чтобы передавать аргументы непосредственно инструменту javac , мы можем хранить их в файлах аргументов . Имена этих файлов с префиксом ‘@ ‘ затем используются в качестве аргументов команды.

Когда команда javac встречает аргумент, начинающийся с ‘@ ‘ , она интерпретирует следующие символы как путь к файлу и расширяет содержимое файла в список аргументов. Пробелы и символы новой строки могут использоваться для разделения аргументов, включенных в такой файл аргументов.

Предположим, у нас есть два файла с именами options и types в каталоге javac-args со следующим содержимым:

Источник

Читайте также:  Подсветка синтаксиса javascript sublime text
Оцените статью