Why does setIconBadge(final String badge) fail on MacOS Java 14 when okay on Java 11?

Viewed 106

On MacOS Catalina using Java 14 I get the following exception

java.lang.UnsupportedOperationException: The ICON_BADGE_NUMBER feature is not supported on the current platform!
    at java.desktop/java.awt.Taskbar.checkFeatureSupport(Taskbar.java:175)
    at java.desktop/java.awt.Taskbar.setIconBadge(Taskbar.java:373)
    at com.jthink.songkong.analyse.analyser.Counters.resetCounters(Counters.java:407)
    at com.jthink.songkong.action.SongKongPrimaryTaskAction.init(SongKongPrimaryTaskAction.java:24)
    at com.jthink.songkong.action.FixFilesAction.actionPerformed(FixFilesAction.java:47)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)

when I try to call setIconBadge()

This works okay using Java 11 so my question is why does it no longer with Java 14, is this on purpose or is it a bug ?

The code for java.awt.Taskbar has

public void setIconBadge(final String badge) {
        checkEventsProcessingPermission();
        checkFeatureSupport(Feature.ICON_BADGE_NUMBER);
        peer.setIconBadge(badge);
    }

Since I am passing it a String should it not be checking for Feature.ICON_BADGE_TEXT anyway ?

This code

 System.out.println("1:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.ICON_BADGE_NUMBER));
        System.out.println("2:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.ICON_BADGE_TEXT));
        System.out.println("3:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.ICON_BADGE_IMAGE_WINDOW));
        System.out.println("4:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.ICON_IMAGE));
        System.out.println("5:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.PROGRESS_VALUE));
        System.out.println("6:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.PROGRESS_VALUE_WINDOW));
        System.out.println("7:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.PROGRESS_STATE_WINDOW));
        System.out.println("8:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.USER_ATTENTION));
        System.out.println("9:"+Taskbar.getTaskbar().isSupported(Taskbar.Feature.USER_ATTENTION_WINDOW));

when run on MacOS Java 11 gives:

1:true
2:true
3:false
4:true
5:true
6:false
7:false
8:true
9:false

when run on MacOS Java 14 gives:

1:false
2:false
3:false
4:true
5:true
6:false
7:false
8:true
9:false
0 Answers
Related