Error: SettingsService is in unnamed module of loader

Hi,

I persist some settings via

package lermitage.intellij.extratci;
...
@State(
    name = "ExtraTciSettings",
    storages = @Storage(value = "lermitage-extratci.xml", roamingType = RoamingType.DEFAULT),
    category = SettingsCategory.PLUGINS
)
public class SettingsService implements PersistentStateComponent<SettingsService> {

    public static SettingsService getInstance() {
        return ApplicationManager.getApplication().getService(SettingsService.class);
    }

    @Override
    public SettingsService getState() {
        return this;
    }

    @Override
    public void loadState(@NotNull SettingsService state) {
        XmlSerializerUtil.copyBean(state, this);
    }

    //public fields, getters and setters...
}

I need to read a setting from an AppLifecycleListener. I cannot reproduce myself, but some users reported errors like this:

Caused by: java.lang.ClassCastException: class lermitage.intellij.extratci.SettingsService cannot be cast to class lermitage.intellij.extratci.SettingsService (lermitage.intellij.extratci.SettingsService is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @5ab32ef6; lermitage.intellij.extratci.SettingsService is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @73ef13e9)

This happens when executing SettingsService.getInstance().

This appeared with 2025 IDEs, like IntelliJ, Rider, WebStorm… on any OS.
I know an AppLifecycleListener is called very early, and some components are not ready (like the license facade), but I never noticed any issue with PersistentStateComponents. At least, until 2025 IDEs (again, I cannot reproduce by myself, for now).

Do you know how to fix that?

Some context: I need to get the license facade in order to know if a user has a valid license for my plugin. If so, I register an IconPathPatcher. Unfortunately, I need to do that in an AppLifecycleListener (otherwise, it’s too late for registering the IconPathPatcher) and the license facade is not ready yet.
As a workaround, I postpone the license check (~5 seconds later), and I save the license status in settings. I read this setting on the next IDE start.
This is why I’m reading my settings on IDE start, in an AppLifecycleListener. Unfortunately, some users are facing an error with that. I don’t understand the error. It seems to be about modules and classloaders, but I do not touch these things…

Thanks