The sections below describe how to import the Flink project into an IDE for the development of Flink itself. For writing Flink programs, please refer to the Java API and the Scala API quickstart guides.
NOTE: Whenever something is not working in your IDE, try with the Maven
command line first (
mvn clean package -DskipTests) as it might be your IDE
that has a bug or is not properly set up.
To get started, please first checkout the Flink sources from one of our repositories, e.g.
We keep a list of big refactoring commits in
.git-blame-ignore-revs. When looking at change annotations using
git blame it’s helpful to ignore these. You can configure git and your IDE to do so using:
git config blame.ignoreRevsFile .git-blame-ignore-revs
A brief guide on how to set up IntelliJ IDEA IDE for development of the Flink core. As Eclipse is known to have issues with mixed Scala and Java projects, more and more contributors are migrating to IntelliJ IDEA.
The following documentation describes the steps to setup IntelliJ IDEA 2019.1.3 (https://www.jetbrains.com/idea/download/) with the Flink sources.
The IntelliJ installation setup offers to install the Scala plugin. If it is not installed, follow these instructions before importing Flink to enable support for Scala projects and files:
mvn clean package -DskipTestsalso creates the files necessary for the IDE to work but without installing the libraries.
.*\.java. Otherwise you will get unintended reformatting in other files you edit.
IntelliJ supports checkstyle within the IDE using the Checkstyle-IDEA plugin.
"tools/maven/checkstyle.xml"within your repository.
"suppressions.xml", and click “Next”, then “Finish”.
Once the plugin is installed you can directly import
"tools/maven/checkstyle.xml" by going to Settings -> Editor -> Code Style -> Java -> Gear Icon next to Scheme dropbox. This will for example automatically adjust the imports layout.
You can scan an entire module by opening the Checkstyle tools window and clicking the “Check Module” button. The scan should report no errors.
Note Some modules are not fully covered by checkstyle,
Nevertheless please make sure that code you add/modify in these modules still conforms to the checkstyle rules.
Enable scalastyle in Intellij by selecting Settings -> Editor -> Inspections, then searching for “Scala style inspections”. Also Place
"tools/maven/scalastyle-config.xml" in the
Each file needs to include the Apache license as a header. This can be automated in IntelliJ by adding a Copyright profile:
Add the following text as the license text:
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
This section lists issues that developers have run into in the past when working with IntelliJ:
invalid flag: --add-exports=java.base/sun.net.util=ALL-UNNAMED
This means that IntelliJ activated the
java11 profile despite an older JDK being used.
Open the Maven tool window (View -> Tool Windows -> Maven), uncheck the
java11 profile and reimport the project.
cannot find symbol: symbol: method defineClass(...) location: class sun.misc.Unsafe
This means that IntelliJ is using JDK 11 for the project, but you are working on a Flink version which doesn’t support Java 11. This commonly happens when you have setup IntelliJ to use JDK 11 and checkout older versions of Flink (<= 1.9). Open the project settings window (File -> Project Structure -> Project Settings: Project) and select JDK 8 as the project SDK. You may have to revert this after switching back to the new Flink version if you want to use JDK 11.
NoClassDefFoundErrorfor Flink classes.
This is likely due to Flink dependencies being set to provided, resulting in them not being put automatically on the
You can either tick the “Include dependencies with ‘Provided’ scope” box in the run configuration, or create a test
that calls the
main() method of the example (
provided dependencies are available on the test classpath).
NOTE: From our experience, this setup does not work with Flink due to deficiencies of the old Eclipse version bundled with Scala IDE 3.0.3 or due to version incompatibilities with the bundled Scala version in Scala IDE 4.4.1.
We recommend to use IntelliJ instead (see above)
A brief guide on how to set up PyCharm for development of the flink-python module.
The following documentation describes the steps to setup PyCharm 2019.1.3 (https://www.jetbrains.com/pycharm/download/) with the Flink Python sources.
If you are in the PyCharm startup interface:
If you have used PyCharm to open a project:
The Python code checkstyle of Apache Flink should create a flake8 external tool in the project.
Now, you can check your Python code style by the operation: “Right click in any file or folder in the flink-python project -> External Tools -> flake8”