Name already in use
OAP / articles / ide_idea.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Основы работы с IntelliJ IDEA. Интерфейс программы
Для написания Java-программы (и естественно, Kotlin) по большому счету достаточно обыкновенного текстового редактора, но, конечно же, такой вариант просто несопоставим с использованием профессиональных сред разработки приложений, так называемых IDE (Integrated Development Environment).
IntelliJ IDEA – это интегрированная среда разработки программного обеспечения на Java/Kotlin от компании JetBrains. Кстати, не только на них. Среда с успехом используется и для других языков программирования, например, Scala. Первая версия программы появилась в 2001 г. и с тех пор программа неуклонно повышает свой рейтинг популярности. IntelliJ IDEA выпускается в двух редакциях: Community Edition и Ultimate Edition. Первая версия является полностью бесплатной. Вторая версия распространяется под различными лицензиями и, как декларируется, может использоваться бесплатно для разработки проектов с открытым программным кодом.
Версии отличаются также поддерживаемыми технологиями.
- Ultimate Edition:
- полнофункциональная среда разработки под JVM и разработке на различных языках: Java, Kotlin, PHP, JavaScript, HTML, CSS, SQL, Ruby, Python;
- поддержка технологий Java EE, Spring/Hibernate и других;
- внедрение и отладка с большинством серверов приложений.
- Community Edition:
- полнофункциональная среда разработки для Java SE, Kotlin, Groovy и Scala;
- мощная среда для разработки под Google Android.
Программа содержит полный набор необходимых для создания полноценных приложений компонент: редактор, среда компиляции и выполнения, а также отладчик.
Естественно, IntelliJ IDEA – не единственная среда создания приложений для Java, достаточно припомнить популярную Eclipse или NetBeans, так что разработчику есть из чего выбирать.
Скопировать дистрибутив можно с сайта разработчика компании JetBrains по ссылке http://www.jetbrains.com/idea/. Установка IntelliJ IDEA проблем не вызывает. Отмечу только, что при инсталляции установите ассоциацию программы (Create associations) с файлами Java и Kotlin.
После установки при первоначальной загрузке IntelliJ IDEA появляется стартовое окно «Welcome to IntelliJ IDEA», позволяющее загрузить либо открыть проект, импортировать проект, выполнить его загрузку из репозитория нескольких систем контроля версий («Check out from Version Control»). При наличии в проекте файлов настройки сборки для Maven или Gradle, IntelliJ IDEA предложит вам использовать их для конфигурации.
После работы с определенным проектом, он запоминается, и при последующем запуске программы происходит загрузка последнего открытого проекта. Впрочем, это происходит при настройках программы по умолчанию, когда в настройках программы (File — Settings) в группе Appearance & Behavior (Внешний вид и поведение), System Setting (Настройки программы) установлен флажок для поля-метки Reopen last project on startup (Открывать последний проект при загрузке).
Основное окно программы в общем виде состоит из трех областей, называемых также инструментальными окнами (на рисунке отмечены красным) и окна редактора (оранжевое).

Инструментальные окна располагаются по периметру окна редактора, то есть слева, справа и внизу от него на полях главного окна, которые в дальнейшем будем называть боковыми панелями (sidebar в терминологии программы). Поскольку инструментальные окна отображают разноплановую информацию, то каждая боковая панель содержит ряд вкладок, которые открываются при выполнении определенной команды. Переход к нужной вкладке (инструментальному окну) осуществляется щелчком на ее названии, которые располагаются на боковых панелях главного окна. Названию некоторых вкладок инструментальных окон предваряет цифра. Используя клавишу совместно с этой цифрой, можно быстро перейти к этой вкладке, попутно открыв ее, если она находится в свернутом положении, либо, наоборот, свернуть ее.
Перед кратким описанием инструментальных окон оговорюсь, что рассматриваемая структура расположения предлагается такой, какой она является после установки программы по умолчанию. Именно такое расположение я и буду рассматривать далее. Однако это вовсе не означает, что инструментальные окна нельзя расположить в других местах главного окна, о чем речь пойдет ниже.
Окно редактора отображается постоянно, занимая большую часть основного окна. Оно может содержать несколько вкладок, отображающих содержимое разных файлов проекта. О содержимом вкладки сигнализирует как расширение файла в названии вкладки, так и пиктограмма перед названием.
Программа содержит внушительный инструментарий управления вкладками окна. Так, расположение вкладок можно произвольно изменять, располагая их, например, горизонтально, перебрасывая файлы из одной группы вкладок в другую, что достигается при помощи группы команд Windows — Editor Tabs либо из контекстного меню, вызываемого на вкладке окна редактирования. При необходимости конкретную вкладку можно закрепить, что бывает полезным при большом количестве вкладок, когда все они не помещаются в окне редактирования, для чего используем команду Pin Tab, о чем речь пойдет ниже.
С правого края окна (в районе полосы прокрутки) могут находятся горизонтальные линии, отмечающие проблемные блоки кода, содержащие ошибки и предупреждения. А в правом вершнем углу отображается общее сосотяние файла (красный — есть ошибки, желтый — есть предупреждения, зеленый — все нормально). Подробнее об этом также позже.
По левому краю окна редактирования расположены метки блоков кода, при помощи которых можно быстро свернуть блок за ненадобностью либо вновь его развернуть. С этой же стороны окна располагаются точки останова (при их наличии), советы по модификации кода и некоторая другая информация.

Для отображения нумерации строк программного кода следует вызвать контекстное меню (кликнуть правой кнопкой мыши) на вертикальной полосе в левой части окна редактирования и выбрать Show Lines Numbers (Отображать нумерацию строк). Однако при таком действии отображение строк осуществляется только в текущем сеансе. Для постоянного же отображения нумерации строк программного кода следует в настройках раскрыть последовательно пункты Editor (Редактор), General (Общие настройки), Appearance (Внешний вид) и установить флажок для поля-метки Show line numbers (Отображать номера строк).
Сам программный код (подсветка текста, шрифты) оформляются в соответствии с настройками программы, о чем речь пойдет позже.
Инструментальное окно проекта
На левой боковой панели отображается инструментальное окно проекта. Оно содержит вкладку иерархической структуры проекта (Project), вкладку структуры (списка метода) класса (Structure) и вкладку Favorites (Избранное), в которой отображаются закладки и точки останова.
Выбор во вкладке структуры проекта приводит к отображению его содержимого в окне редактора. Поскольку код практически любого класса содержит множество методов/функций, то вкладка «Structure» как раз и отображает их список. Он может быть упорядочен как по алфавиту (Sort by Alphabetically), так и в порядке их расположения в (Sort by Visibility). Щелчок на имени класса инициирует переход на начало метода или функции в окне редактора.

Инструментальное окно Избранное
В нижней части левой боковой панели основного окна можно вывести инструментальное окно «Favorites» (Избранное), содержащее, например, список точек останова и закладок, обеспечивая тем самым к ним быстрый доступ.
Инструментальное окно с инструментами сборки проектов
Данное окно располагается на правой боковой панели. Оно изначально содержит вкладки для наиболее распространенных инструментов сборки проектов Java – Gradle (или Maven) и Ant.
Инструментальное окно вывода
Окно располагается на нижней инструментальной панели. В нем в зависимости от характера информации отображаются, например, сообщения компиляции («Messages»), консольный ввод/вывод («Terminal»), контроль изменений проекта («Version Control»), результаты работы отладчика («Debug») и некоторые другие.
Создается проект просто: File — New — Project. А вот дальше возникают вопросы: какого типа у нас проект, какие библиотеки нужны.

Мы в своих проектах будем использовать Gradle и Kotlin/JVM. Если со вторым пунктом (язык программирования и реализация под JavaVirualMachine) сомнений нет, то с первым пока непонятно. Я выбрал Gradle, потому что он используется по-умолчанию в Android Studio с которым мы познакомимся в следующем году. Но что вообще означают эти слова: Maven, Gradle?
Если коротко, то это системы сборки проектов, а если подробно, то читайте, например, тут
При создания нового проекта система создает для нас необходимую структуру каталогов и файлы настроек. Нам из всего этого пока понадобится только каталог с исходными кодами и настройки системы сборки проектов:

Для создания нового файла нужно кликнуть правой кнопкой мыши на подкаталоге kotlin в каталоге src и выбрать Kotlin File/Class
В появившемся окне введите название файла и выберите из списка File

В первом созданном файле (у нас он называется main.kt, но это не обязательно) сделайте точку входа в программу:
Любая программа (консольная, про андроид мы пока не говорим) начинается с функции main.
В лабораторных работах, чтобы не плодить проекты, мы будем использовать один и тот же проект с одним главным файлом, а для разных задач создавать дополнительные файлы, например:
Все файлы одного пакета (название пакета мы не задавали, но он назначается системой) собираются в одину программу. Таким образом весь код лабораторной работы мы будем писать в отдельном файле (lab1.kt), а вызывать его из функции main. Это упростит нам работу с репозиторием (с ним мы познакомимся на следующем занатии) и уменьшит количество мусора на диске.
Configuring Project Structure
You can configure the structure of your project with ⌘; (macOS), or Ctrl+Alt+Shift+S (Windows/Linux).
The most important thing to note is that if you're using a build system such as Maven, or Gradle, they will override settings in your Project Structure.
You can change your Java SDK here, and your Language Level. The Java SDK is the collection of tools to develop the application, and your language level defines the coding assistance you get in the editor, and by default, the language level is also your target bytecode version.
You can also manage your existing Java SDKs here and download new ones from various vendors.
Intellij IDEA Project view doesn't show structure as it did before.
My directory structure in the Project seems to have disappeared. The first picture is the «bad». I recently upgraded to 12.1 and the vim emulator at about the same time. I don’t know if I missed a dialog that reset something? I can’t figure out how to get it back like the second picture.
I’ve tried to re-import the project but it has not helped. I keep the project on Dropbox and have another PC where I have not reloaded project. Is there a way to get my view from that machine?
The picture is the «good» and how I want it to look. 
11 Answers 11
I’ve come across this problem a few times myself. What happened is that intellij lost the module in my project settings. Here’s my steps to fix it:
File -> Project Structure -> Click on modules (notice empty list) -> Click on ‘+’ -> Click on import module -> Find existing myProj.iml
I also have quite a few IntelliJ projects and also git folders of text files. I found IntelliJ does not always reconstruct the .idea files correctly. However the following methods work for me.
Open IntelliJ in the root project level works for me.
I have a mixed project folder tree like the following:
My problem is that when I open IntelliJ on my proj_react folder, I could not see my src folder or lib folder. (My proj_react is one level down from my git_root.)
Then I open IntelliJ on git_root, I could see everything. The problem is solved.
If you are working on a software development project where you are using Maven, Gradle, Flash Builder etc., the below mentioned steps should restore the project structure:
- Ctrl + Alt + Shift + S (or) File>>Project Structure
- Select ‘Modules’ in ‘Project Settings’
- Alt + Insert (or) Select ‘+’ to add a new module
- Select ‘Import Module’
- Select the folder you want to import the module from(Generally the parent folder)
- Select ‘Import module from external model’ and the corresponding external model
This resets your project structure.
![]()
![]()
You can sometimes rescue projects like these by going and resetting their content root in the module settings. Or even recreate the module as another answer suggests.
This is something that would happen to me if I opened an IntelliJ project in PhPStorm, then tried to open it in IntelliJ again.
However as was mentioned the project format changed recently, so you should use the same version of intelliJ to work on your project.
If you have a content root for a project module that intersects with another content root, then this problem will occur. For example:
If you have a project that has a source root for «Project A» and you add a source root for «module B» you will end up with missing structure, such as your first picture. This happens because the content root for module B is within project A structure.
This worked at one time, as I have the setup above with multiple modules. When I upgraded to 12.1.6 this stopped working. If you have overlapping source roots you will see this problem.
Разработка плагина IntelliJ IDEA. Часть 3
В IntelliJ IDEA проект инкапсулирует все исходные коды, библиотеки, сценарии сборки в едином организационном блоке. Абсолютно все действия в IDEA происходят в контексте проекта. Проект может содержать коллекции модулей и библиотек. В зависимости от логических или функциональных требований, можно создать одномодульный или многомодульный проект.
Модули
Модуль – это отдельная сущность функциональности, которая может быть запущена, протестирована и отлажена независимо.
Модули включают такие вещи как исходные коды, сценарии сборки, юнит-тесты, и т.д. Каждый модуль в проекте может использовать определенный SDK, либо наследовать SDK проекта. Модули могут зависеть от других модулей в проекте.
Библиотеки
- библиотека модуля – видна только в данном модуле, информация о ней сохраняется в *.iml-файл;
- библиотека проекта – видна внутри всего проекта, информация о ней сохраняется в *.ipr-файл;
- глобальная библиотека – информация о ней сохраняется в файле applicationLibraries.xml, видимость которого распространяется на все проекты.
Каждый проект использует Software Development Kit (SDK). Для Java проектов существует специальный тип SDK, называемый JDK (Java Development Kit). SDK определяет какой API используется при сборке проекта. В многомодульном проекте, по-умолчанию, SDK наследуется всеми модулями, но также возможно определить отдельные SDK для соответствующих модулей.
Facet
Facet – это функциональность, ассоциированная с модулем, сообщающая как взаимодействовать с содержимым модуля. Модуль может иметь несколько Facets.
В IntelliJ IDEA Ultimate Edition имеется настройка в параметрах проекта, позволяющая назначать Facets, в отличие от Community Edition, где назначение Facet доступно лишь из API.
Строение проекта
С точки зрения разработчика плагина, структура проекта выглядит так, как показано на рисунке ниже.
Проект содержит один или несколько модулей. Каждый модуль включает исходный код плагина и вызывает упорядоченный набор сущностей, связанных с SDK и библиотеками. Модуль может иметь набор Facets. 
Работа с файлами проектов, модулями, библиотеками
- интерфейс Project;
- абстрактный класс ProjectRootManager;
- абстрактный класс ProjectManager;
- интерфейс ProjectFileIndex.
- абстрактный класс ModuleManager;
- интерфейс Module;
- абстрактный класс ModuleRootManager;
- интерфейс ModuleRootModel;
- класс ModuleUtil;
- интерфейс ModifiableModuleModel;
- интерфейс ModifiableRootModel.
Виртуальная файловая система IntelliJ IDEA
- предоставление универсального API для работы с файлами независимо от их физического местоположения (на диске, в архиве, на FTP-сервере и т.д.);
- отслеживание изменений в файлах и предоставление как старой, так и новой версии их содержимого;
- предоставление возможности указать дополнительную информацию для файла внутри VFS.
Снапшоты работают на уровне приложения, поэтому даже при множественных ссылках из различных проектов, данные сохраняются в единственном экземпляре.
Все операции по доступу проходят через снапшот, если запрошенная информация недоступна, то она подгружается с диска. Содержимое файлов и список файлов в директории сохраняются, только если запрошена специфическая информация, в остальных случаях сохраняется только метаинформация (имя, размер и т.д.).
Все операции по записи – синхронны, т.е. данные записываются на диск немедленно.
IntelliJ IDEA выполняет асинхронную операцию полного обновления содержимого при запуске. Также, по-умолчанию, обновление происходит при переключении из другого приложения, но это поведение можно настроить на вкладке «Settings | Synchronize files».
Операция синхронизации основана на временных метках, если дата модификации не изменилась, то IDEA не обновляет содержимое файла. По возможности IntelliJ IDEA использует встроенные в операционную систему наблюдатели за файлами (inotify, epoll и т.д.).
