Может быть желательно запаковать программу в один файл так, чтобы программа работала по двойному клику мышки. Это нужно например в случае когда вы сделали игру/программу и захотели поделиться ею с друзьями. А т.к. им может быть неудобно/долго/сложно компилировать программу самим, то хочется отправлять уже готовое приложение.

В общем случае в реальном мире это делается относительно сложно с помощью сборочных инструментов вроде Ant, Maven или Gradle. Но нам подойдет и более простой способ - с помощью встроенной в Intellij IDEA функциональности.

0) Нужен готовый проект

Для того чтобы было что запаковывать в приложение нужен проект открытый в Intellij IDEA, который можно запустить. Т.е. в этом проекте есть main функция, которая будет являться точкой входа в приложение, т.е. будет запускаться в момент двойного клика по запакованной программе.

Дальше будет предполагаться что класс в котором определена желаемая main функция называется Monoceros.

1) Настройка упаковки в пакет

  • File->Project Struture->Artifacts
  • Зеленый плюсик сверху-слева -> JAR -> From modules with dependencies...
  • Справа от Main Class нажав на три точки нужно выбрать класс Monoceros
  • Убедиться, что выбран вариант extract to the target JAR
  • Нажать Ok
  • Еще раз нажать Ok

2) Компиляция пакета

Теперь можно собирать пакет приложения:

  • Build -> Build Artifacts...
  • Выбираете нужный артефакт, и жмете Build

Теперь в подпапке проекта out/artifacts/<ArtifactName>_jar/ лежит упакованный jar файл. Его можно запустить на любом компьютере, на котором установлена Java-машина (она же JVM, она же JRE).

3) Запуск jar-пакета

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

4) Если несколько main-функций

Есть несколько вариантов что делать, если у вас есть несколько main-функций. По сути это означает что у вас есть несколько программ. Например сервер и клиент. Самый простой вариант - выполнить эту инструкцию два раза для каждого класса, в котором есть main-функция, тогда будет несколько jar-пакетов.

Если вдруг не запускается

Запустите терминал (как это сделать - гуглится по windows N how to run command prompt, где N - ваша версия ОС). Вероятно почти везде сработает открыть главное меню (пуск или меню-плитка), там запустить программу Выполнить, в ней ввести cmd и нажать Enter.

В появившемся черном текстовом окне перейдите в папку где находится <ArtifactName>.jar:

Например если файл находится по пути C:\A\B\C\<ArtifactName>.jar то надо выполнить две команды:

  • C:
  • cd A\B\C

Теперь надо запустить явным образом jar-файл (то же самое происходит при двойном клике):

  • java -jar <ArtifactName>.jar

Скорее-всего как и при двойном клике программа на самом деле запускается но падает на старте, и поэтому создается впечатление что она не запустилась, хотя на самом деле она просто быстро упала.

Преимущество явного запуска из консоли в том, что ошибки приложения будут видны в консоли (аналогично тому, как они были видны в консоли среды разработки).