On Fri, 11 Jul 2025 18:46:14 GMT, Naoto Sato <na...@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.

This pull request has now been integrated.

Changeset: ae0dac43
Author:    Naoto Sato <na...@openjdk.org>
URL:       
https://git.openjdk.org/jdk/commit/ae0dac43c09377c87e9b0452618a5b32c8568150
Stats:     566 lines in 12 files changed: 223 ins; 237 del; 106 mod

8361613: System.console() should only be available for interactive terminal

Reviewed-by: jlahoda, smarks, alanb

-------------

PR: https://git.openjdk.org/jdk/pull/26273

Reply via email to