RFR: 8159055: ImageIcon setImage and constructor can't handle null parameter [v5]

Alexey Ivanov aivanov at openjdk.org
Wed Jun 18 17:48:30 UTC 2025


On Wed, 18 Jun 2025 16:27:03 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:

>> ImageIcon(URL) will call ImageIcon(URL, String) where already image null check was there so I guess it will not throw NPE before fix too..
>
> Indeed, it throws `NullPointerException`:
> 
> 
> jshell> import javax.swing.ImageIcon;
> 
> jshell> import java.net.URL;
> 
> jshell> new ImageIcon((URL) null);
> |  Exception java.lang.NullPointerException: Cannot invoke "java.net.URL.toExternalForm()" because "location" is null
> |        at ImageIcon.<init> (ImageIcon.java:234)
> |        at (#3:1)
> 
> 
> https://github.com/openjdk/jdk/blob/984d7f9cdfb0d75ea906ce32df0b6c447f4d5954/src/java.desktop/share/classes/javax/swing/ImageIcon.java#L202-L204

It also throws an exception this way:


jshell> new ImageIcon((URL) null, "");
|  Exception java.lang.NullPointerException: Cannot invoke "java.net.URL.toString()" because "url" is null
|        at SunToolkit.getImageFromHash (SunToolkit.java:699)
|        at SunToolkit.getImage (SunToolkit.java:735)
|        at ImageIcon.<init> (ImageIcon.java:215)
|        at (#4:1)


Thus, `ImageIcon(URL)` constructors have to be updated… under a new issue, maybe?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25767#discussion_r2155174950


More information about the client-libs-dev mailing list