RFR: 8361613: System.console() should only be available for interactive terminal [v3]
Jan Lahoda
jlahoda at openjdk.org
Tue Jul 15 06:29:38 UTC 2025
On Mon, 14 Jul 2025 20:23:25 GMT, Naoto Sato <naoto at openjdk.org> wrote:
>> In prior JDK releases, `System.console()` could return a `Console` instance even when the JVM was not attached to an interactive terminal. This could lead to confusion, particularly when input was not from a keyboard or output was redirected, such as to or from a file or pipe, especially when using methods like `readPassword()`. Starting with JDK 25, the default behavior has changed: `System.console()` now returns `null` if standard input and/or output is redirected. However, if a JLine-based Console implementation is explicitly specified via the system property `-Djdk.console=jdk.internal.le`, the previous behavior may still occur.
>> This PR aims to align the behavior of the JLine-based `Console` implementation with the default `System.console()` behavior. The actual code change is a one-liner in `JdkConsoleProviderImpl.java`; the rest of the changes are adjustments to test cases to reflect the updated behavior. A corresponding CSR has also been drafted.
>
> Naoto Sato has updated the pull request incrementally with one additional commit since the last revision:
>
> Reflects review comments
Looks good to me, although additional review from core libs might be desirable. Thanks!
-------------
Marked as reviewed by jlahoda (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/26273#pullrequestreview-3018857714
More information about the compiler-dev
mailing list