Younes Mahmoudi created FLINK-41372:
---------------------------------------
Summary: [Docs] Document disabling "Use '--release' option" in
IntelliJ to prevent javac failure with --add-exports
Key: FLINK-41372
URL: https://issues.apache.org/jira/browse/FLINK-41372
Project: Flink
Issue Type: Improvement
Components: Build System, Documentation
Environment: - Git Commit: 6e194b0167e (master)
- OS: Linux 6.12.112-1-MANJARO x86_64
- IDE: IntelliJ IDEA 2026.2 (Ultimate Edition) - Build #IU-262.8665.258
- SDK: OpenJDK 64-Bit Server VM (build 21.0.12.1 & 17.0.20.1+1)
Reporter: Younes Mahmoudi
h3. Problem Description
When importing and compiling Apache Flink in modern versions of IntelliJ IDEA
(e.g., 2026.x), the compilation fails for modules relying on internal JVM
packages (such as flink-annotations and flink-test-utils-junit).
Example compiler errors:
{code}
java: exporting a package from system module java.management is not allowed
with --release
java: exporting a package from system module java.rmi is not allowed with
--release
java: exporting a package from system module java.security.jgss is not allowed
with --release
{code}
h3. Technical Root Cause
1. *Flink Build Configuration:* Certain modules configure '--add-exports' in
their pom.xml files (e.g., '--add-exports java.management/...=ALL-UNNAMED') to
access internal APIs.
2. *Javac Specification (JEP 247):* When '--release N' is supplied to javac,
the compiler enforces cross-compilation against the documented platform
signature (ct.sym) and strictly disallows package exports via '--add-exports'.
3. *IntelliJ Default Behavior:* Recent versions of IntelliJ IDEA enable "Use
'--release' option for cross-compilation" by default under Settings -> Build,
Execution, Deployment -> Compiler -> Java Compiler. This flag collision causes
javac to fail.
h3. Test Verification Matrix
|| # || Project SDK || Maven Profiles || "Use '--release' option..." || Result
||
| 1 | JDK 21 | IntelliJ defaults | Checked (Default) | FAILED (exporting
package not allowed with --release) |
| 2 | JDK 21 | IntelliJ defaults | Unchecked | SUCCESS (MemorySizeTest passed,
exit code 0) |
| 3 | JDK 21 | java21-target & java21 | Checked | SUCCESS (Flink target
profiles override properly) |
| 4 | JDK 17 | IntelliJ defaults | Checked | FAILED (Exact same collision) |
h3. Proposed Resolution
Update the documentation in DEVELOPMENT.md (and
docs/content/docs/flinkDev/ide_setup.md):
* Explicitly instruct developers to uncheck "Use '--release' option for
cross-compilation" under Settings | Build, Execution, Deployment | Compiler |
Java Compiler, OR activate the respective target profile (e.g. java21-target).
I am ready to submit a documentation PR for this once approved.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)