Java-модуль обеспечивает интерфейс; не работает - PullRequest
0 голосов
/ 04 июля 2019

У меня есть интерфейс и реализация, которая предоставляется через модуль.Это сработало так, но по какой-то причине больше не работает.Когда я смотрю, как использовать SPI, это то, что появляется, но по какой-то необъяснимой причине это не работает.

Интерфейс

public interface VisualProvider {

    void init ();

    void destroy ();
}

Реализация

public final class OpenGLVisualProvider implements VisualProvider {

    @Override public void init () {

        System.out.println ( "test" );
    }

    @Override public void destroy () { Loader.destroy (); }
}

module-info.java

import io.switchware.kobalt.core.VisualProvider;
import io.switchware.kobalt.opengl.OpenGLVisualProvider;

module kobalt.visual.opengl {

    provides VisualProvider with OpenGLVisualProvider;
}
private static final ServiceLoader < VisualProvider > VISUAL_PROVIDERS = ServiceLoader.load ( VisualProvider.class );

public static Iterator < VisualProvider > visualProviders ( boolean refresh ) {

    if ( refresh ) VISUAL_PROVIDERS.reload ();
    return VISUAL_PROVIDERS.iterator ();
}

Когда я звоню visualProviders ( true ).forEachRemaining ( VisualProvider::init );, ничего не происходит, но должно вывести test в консоли

...