Project structure settings
Project structure settings are stored together with other project files in the .idea directory in the .xml format. These settings include SDKs, project compiler output paths, and libraries that are available for all modules within a project.
To change the project structure settings, click on the toolbar and select Project Structure . Alternatively, go to or press Ctrl+Alt+Shift+S.
Project SDK
An SDK is a collection of tools that you need to develop an application for a specific software framework. If the necessary SDK is installed on your computer, but not defined in the IDE, select
, and specify the path to the SDK home directory.To develop Java-based applications, you need a JDK (Java Development Kit). For more information about setting up the project JDK, refer to Set up the project JDK.
To view or edit the name and contents of the selected SDK, click Edit. For more information about SDK and how to work with them, refer to SDKs.
Project language level
Language level defines coding assistance features that the editor provides. Language level can differ from your project SDK. For example, you can use the JDK 9 and set the language level to 8. This makes the bytecode compatible with Java 8, while inspections make sure you don't use constructs from Java 9.
Language level also affects compilation. If you don't manually configure the target bytecode version for your compiler (
), it will be the same as the project language level.For each module, you can configure its own language level.
In some cases, you can select the Preview
language level that allows you to use preview features as described in Java Language Specification. For more information about support for preview features, refer to Preview features policy.
Preview features policy
The purpose of preview features is to gather feedback from users, library developers, and tool developers. They are not designed to be used in production, as features may change or disappear.
The IDE normally supports two or three preview levels back and, if possible, the preview features of whatever release is coming next. For example, IntelliJ IDEA 2023.3 supports Java 20-preview and 21-preview. IntelliJ IDEA 2024.1 supports Java 21-preview and 22-preview.
Preview language levels that are no longer supported are listed separately and written in red in the Language level drop-down list in the Project Structure dialog (Ctrl+Alt+Shift+S or )
When you open a project with modules configured to use an unsupported language preview version, you will see the Unsupported Java preview features
notification. In this case, you will still be able to run and compile the code. However, if you also have preview features in your code, coding assistance functionality, such as completion, inspections, intentions, and refactorings, might work incorrectly with these code fragments.
We recommend that you update your JDK or remove preview features from your code.
Project compiler output
Compiler output path is the path to the directory in which IntelliJ IDEA stores the compilation results. Click the icon to select the output directory. In this directory, the IDE creates two sub-directories:
production for production code.
test for test sources.
In these subdirectories, individual output directories will be created for each of your modules. The output paths may be redefined at the module level.
Project libraries
Project-level libraries are available for all modules with a project. To configure a project library, in the Project Structure dialog, click Libraries. For more information, refer to Libraries.
Default structure for new projects
You can configure project structure settings not only for the current project, but for all projects that you will be creating later. This means that you can set the new default structure for your projects.
In the main menu, go to
.
If you want to share project settings between already existing projects, you can use the Settings Sync plugin. You can also export the settings to a ZIP archive and import it later to other IDE instances.