RFR: 8373885: Compilation failure due to a warning when compiling with Java 25
Chen Liang
liach at openjdk.org
Wed Dec 17 19:45:44 UTC 2025
On Wed, 17 Dec 2025 15:04:18 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> When compiling JavaFX with Java 25, a new warning appears. This warning will result in a compilation failure because warnings are treated as error (`-Werror`).
>>
>> The following warning appears:
>>
>>
>>> Task :controls:compileJava
>> C:..\jfx\modules\javafx.controls\src\main\java\javafx\scene\control\SplitPane.java:320: warning: [identity] use of a value-based class with an operation that expects reliable identity
>> private final WeakHashMap<Integer, Double> dividerCache = new WeakHashMap<>();
>> ^
>> C:..\jfx\modules\javafx.controls\src\main\java\javafx\scene\control\SplitPane.java:320: warning: [identity] use of a value-based class with an operation that expects reliable identity
>> private final WeakHashMap<Integer, Double> dividerCache = new WeakHashMap<>();
>> ^
>> error: warnings found and -Werror specified
>> 1 error
>> 2 warnings
>>
>>> Task :controls:compileJava FAILED
>>
>>
>> The warning makes sense: We use a `WeakHashMap` with the `Integer` class. So the `Integer` values are saved as `WeakRef` inside the `Map`. This makes no sense and is rightfully a warning.
>
> modules/javafx.controls/src/main/java/javafx/scene/control/SplitPane.java line 316:
>
>> 314:
>> 315: // Cache the divider positions if the items have not been created.
>> 316: private final Map<Integer, Double> dividerCache = new HashMap<>();
>
> I don't understand why this would have anything to do with a compiler warning. Further, this will likely lead to a leak, so I doubt this is what we want.
I recommend using a LinkedHashMap that overrides `removeEldestEntry` for this cache instead.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/2010#discussion_r2628410224
More information about the openjfx-dev
mailing list