Как проводится компиляция в IntelliJ IDEA

От автора: если бы не было таких мощных и качественных инструментов, как IntelliJ IDEA, компиляция занимала бы слишком много времени у разработчика — ведь это нужно собрать все файлы в единую программу, а после корректно запустить ее. К счастью, благодаря высокоразвитым IDE вся сложность заключается в настройке компилятора, а не каждого отдельного файла, поэтому в процессе работы с IntelliJ IDEA компиляция делается очень просто. Сегодня мы расскажем, как конфигурировать эту IDE для успешной сборки.

Знакомство с компилятором
Компиляция — это своеобразный процесс сборки, который заключается в трансляции всех модулей, которыми оснащена программа. В зависимости от ситуации, исходный код может быть написан на одном языке или на нескольких. Суть в том, чтобы преобразовать человекопонятный код в машинопонятный.
До того, как появились компиляторы, все, с чем вы сталкиваетесь сегодня, делалось вручную. Но по мере развития продуктов данный софт стал необходим. Это программы, которые могут переводить код, написанный на высокоуровневом языке программирования, в низкоуровневый код, то есть в нули и единицы. Таким образом, процессор может понять то, что сказал человек.
Компиляторы бывают нескольких видов. Точно так же и процесс компиляции бывает разным. Все зависит от того, какой язык используется (компилируемый/интерпретируемый) и какое применяется программное обеспечение для взаимодействия. Кстати, раньше этот вид ПО называли «программирующими программами». Этимологическая логика здесь проста: это был инструмент, который заставлял компьютер выполнять код — то есть, программировал его.

Профессия Frontend-разработчик PRO
Готовим Frontend-разработчиков с нуля
На курсе вы научитесь создавать интерфейсы веб-сервисов с помощью языков программирования и дополнительных технологий. Сможете разрабатывать планировщики задач, мессенджеры, интернет-магазины…
Исполнительные файлы
Вы привыкли к тому, что готовая программа должна запуститься на вашем компьютере. И потому хотите, чтобы это происходило на каждом удобном вам ПК. И они так могут. Главное, чтобы на ПК или любом другом устройстве была установлена исполнительная среда Java. Она встречается не только на компьютерах, но и на всех остальных системах, вроде бытовой техники.
Как правило, новички сразу ищут в IntelliJ IDEA возможность провести эту процедуру и превратить написанный ими код в .exe файл. Вынуждены вас огорчить, но это невозможно. Суть в том, что это противоречит самой концепции языка, не говоря уже о физической возможности. «Написано единожды — работает везде».
Тем не менее, неужели невозможно делать программы для Windows на языке Java? Конечно, можно, и готовые файлы будут иметь расширение .exe. Вот только дело тут не в компиляции. Программист должен сделать обертку для программы, чтобы она запустила Java Runtime Machine и Java-код вне глаз пользователя. И это действительно работающее решение.
Настройка проще, чем кажется
Вы можете изменить список распознанных ресурсов, исключить определенные пути из компиляции, выбрать нужный компилятор, настроить обработку аннотаций и т. д.
В диалоговом окне «Settings/Preferences» выберите Build, Execution, Deployment.
На странице компилятора вы можете, например, изменить регулярное выражение, описывающее расширения файлов, которые будут распознаваться как ресурсы. Используйте точки с запятой (;) для разделения отдельных шаблонов.
На странице «Исключения» укажите файлы и папки, которые не следует включать в компиляцию. Используйте «+» для добавления элементов в список.
Замечания:
На странице Java Compiler проверьте, является ли используемый компилятор тем, который вам нужен. При необходимости выберите другой компилятор.
На странице Annotation Processors настройте параметры обработки аннотаций.
Примените изменения и закройте диалог.

Профессия Frontend-разработчик PRO
Готовим Frontend-разработчиков с нуля
На курсе вы научитесь создавать интерфейсы веб-сервисов с помощью языков программирования и дополнительных технологий. Сможете разрабатывать планировщики задач, мессенджеры, интернет-магазины…
На этом заканчиваем рассказ о компиляции. Вам нужно запомнить два основных тезиса: компилятор IDEA нуждается в настройке, компиляции jar в exe не существует. Это совершенно другой, абсурдный процесс. И это не просто балластное знание. Оно убережет вас от скачивания утилит, которые обещают подобное чудо.
Как создать exe файл в java intellij idea
I've finally finished a very simple text based game, which I wrote to train all the concepts we've learned during first semester of Uni and after uploading the .java files(only 3, it's very simple) to Github, I decided to make an .exe file to try and send to a friend to show him my work.
Problem is I can't seem to find my way around the creation of artifacts. I tried making a .jar file and after a successful build, IntelliJ creates a .rar file, which contains my classes and a bunch of other files/libraries.
Using console commands, Java can't seem to find my .jar file, but IntelliJ's directory explorer shows it being there.
Reading stuff online, it says I need that .jar file to create an .exe and all video tutorials so far are on Linux machines, which confuses me a bit as I am on Win10.
I've been battling this issue for 2 hours now and I am at a loss. Any help is greatly appreciated.
Как в IntelliJ IDEA написать и собрать в исполняемый .exe файл приложение на JavaFX
При кажущейся простоте создания приложения на JavaFX (особенно с помощью JavaFX Scene Builder 2.0 и бесплатных видео-уроков на различных ресурсах), написание функционала программы – это только половина пути. Программа должна работать, жить своей жизнью самостоятельно, без привязки к среде разработки. И, как показывает мой личный опыт, при сборке проекта и выпуске его в «большой мир» приходится преодолевать немало терний.
Как превратить Java программу в EXE-файл?
Двойной щелчок для запуска — один из самых простых способов открыть программу. Если у человека, которому вы хотите показать свое приложение, уже установлена правильная версия Java, для запуска он может дважды щелкнуть файл jar. Если же у него не установлена Java, то есть способы создать исполняемый установщик, такой как jpackage. После этого для запуска кода нужно лишь нажать на этот установщик. Также можно использовать Native Image, чтобы превратить код в исполняемый файл, который не требует какой-либо дополнительной установки.
В этой статье мы сосредоточимся на довольно простом подходе, который работает для любого приложения, независимо от того, какие зависимости вы включаете или какие функции JVM используете.
Код, о котором сегодня пойдет речь, можно найти в репозитории GitHub, а исполняемые файлы с программой выложены здесь.
Используемый стек
Шаг 1. Скомпилируйте и упакуйте свой код в jar
Эта базовая программа создаст простое окно с текстом, который вы можете менять, нажимая на одну из кнопок в интерфейсе.
Эта базовая программа создаст простое окно с текстом, который вы можете менять, нажимая на одну из кнопок в интерфейсе.
import javax.swing.*;
import java.awt.*;
public class Main <
public static void main(String[] args) <
var label = new JLabel(“Hello, World!”);
label.setFont(new Font(“Serif”, Font.PLAIN, 72));
var uppercaseButton = new JButton(“Uppercase”);
uppercaseButton.addActionListener(e ->
label.setText(WordUtils.capitalize(label.getText()))
);
var lowercaseButton = new JButton(“lowercase”);
lowercaseButton.addActionListener(e ->
label.setText(WordUtils.uncapitalize(label.getText()))
);
var panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(label);
panel.add(uppercaseButton);
panel.add(lowercaseButton);
var frame = new JFrame(“Basic Program”);
frame.add(panel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
>
>
Сейчас наша цель состоит в том, чтобы упаковать код вместе с его зависимостями в jar. JAR-файлы — это обычные ZIP-архивы с небольшой дополнительной структурой.
Для проекта Maven конфигурация будет выглядеть следующим образом.
<project xmlns=”http://maven.apache.org/POM/4.0.0″
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>javaexe</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>18</maven.compiler.source>
<maven.compiler.target>18</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
</dependency>
</dependencies>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<configuration>
<transformers>
<transformer implementation=”org.apache.maven.plugins.shade.resource.ManifestResourceTransformer”>
<manifestEntries>
<Main-Class>example.Main</Main-Class>
<Build-Number>1.0</Build-Number>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</executions>
Здесь плагин “shade” будет обрабатывать включение кода из всех ваших зависимостей в jar. В данном случае единственной внешней зависимостью является org.apache.commons/commons-text.
mvn clean package
Затем мы переместим этот jar-файл в новый каталог target/, где он будет отделен от других файлов.
mkdir build
mv target/javaexe-1.0.jar build
Шаг 2. Создайте среду выполнения Java (Java Runtime Environment, JRE)
Чтобы запустить уже созданный нами jar-файл, нужно связать его со средой выполнения Java. Для этого мы будем использовать jlink.
Поскольку в экосистеме Java не используются модули, то вы, скорее всего, не слышали о них и не использовали jlink.
Короче говоря, jlink может создавать “настраиваемые исполняемые образы”. Например, вы делаете веб-сервер. Вам не нужны AWT или Swing, поэтому включать их в код будет лишним. С помощью jlink вы можете создать JRE, которая вообще не включает модуль java.desktop.
Эта система работает лучше всего, если ваше приложение и все его зависимости включают скомпилированные файлы module-info.java, которые дают jlink точную информацию, какие модули вы хотите включить. Вы также можете вручную определить список необходимых модулей, используя jdeps.
И даже без модульного проекта мы можем эффективно клонировать нашу инсталляцию Java в каталог с помощью jlink.
jlink –add-modules ALL-MODULE-PATH –output build/runtime
Включение каждого модуля по отдельности дает уверенность в том, что такие библиотеки как org.apache.commons/commons-text будут работать именно так, как задумано. Нужно лишь выяснить, какие модули нам требуются.
Шаг 3. Объедините Jar и JRE в исполняемый файл
Имея jar-файл, содержащий код и все его зависимости, а также JRE, остается только объединить их. Для этого нам нужно выполнить следующие действия:
- Заархивируйте каталог, содержащий JRE и jar вашего приложения.
- Прикрепите сценарий-заглушку (stub script) к верхней части этого zip-файла, который извлечет данные во временный каталог и запустит код.
- Для этого существует библиотека JavaScript, которая называется caxa. Ее цель — превращать проекты NodeJS в исполняемые файлы, она также может объединять любые установки NodeJS в системе. К счастью, этот шаг можно пропустить, указав флаг –no-include-node.
npx caxa \
–input build \
–output application \
–no-include-node \
Это создаст исполняемый файл с именем “application”. Если вы создаете его для Windows, то нужно указать “application.exe”. Когда исполняемый файл запускается, <
Учтите, что при создании исполняемых файлов используются также и такие механизмы, как подпись кода и автоматические обновления. Однако эти вещи требуют более глубокого изучения, которое трудно вместить в одну публикацию.