pupeno:
私は追加しているmodule-info.java
にSをIkonliのパッケージと、私は彼らのサービスクラスとのトラブルに実行していますよ。ikonli-core
呼ばれるインタフェースを定義しますIkonHandler
。ikonli-fontawesome5-pack
持っているサービスプロバイダのためにIkonHandler
呼ばれるがFontAwesomeSolidIkonHandler
。これらのサービスprodiversはで使用されているikonli-javafx
のIkonResolver
。
この考えると、私はこれらのモジュール定義を作成しました:
module org.kordamp.ikonli.core {
exports org.kordamp.ikonli;
}
module org.kordamp.ikonli.javafx {
exports org.kordamp.ikonli.javafx;
uses org.kordamp.ikonli.IkonHandler;
requires javafx.graphics;
requires org.kordamp.ikonli.core;
}
module org.kordamp.ikonli.fontawesome5 {
exports org.kordamp.ikonli.fontawesome5;
provides org.kordamp.ikonli.IkonHandler with org.kordamp.ikonli.fontawesome5.FontAwesomeBrandsIkonHandler, org.kordamp.ikonli.fontawesome5.FontAwesomeRegularIkonHandler, org.kordamp.ikonli.fontawesome5.FontAwesomeSolidIkonHandler;
requires org.kordamp.ikonli.core;
requires org.kordamp.jipsy;
}
彼らは、完全ではないかもしれませんが、私のアプリケーションが起動したときに、それがこのエラーで失敗したように、彼らは完全に十分です。
java.lang.UnsupportedOperationException: Cannot resolve 'fas-user'
これは何のハンドラがために管理しないときスローでアイコンをロードします:
public IkonHandler resolveIkonHandler(String value) {
requireNonNull(value, "Ikon description must not be null");
for (IkonHandler handler : HANDLERS) {
if (handler.supports(value)) {
return handler;
}
}
throw new UnsupportedOperationException("Cannot resolve '" + value + "'");
}
起こっている理由は、つまりHANDLERS
空です。HANDLERS
され、このコードによって、起動時にロードされました:
ClassLoader classLoader = IkonResolver.class.getClassLoader();
ServiceLoader<IkonHandler> loader = ServiceLoader.load(IkonHandler.class, classLoader);
for (IkonHandler handler : loader) {
HANDLERS.add(handler);
handler.setFont(Font.loadFont(classLoader.getResource(handler.getFontResourcePath()).toExternalForm(), 16));
}
しかし、上記引用されたモジュール定義で、ServiceLoader.load(IkonHandler.class, classLoader)
何のサービスプロバイダーを見つけていません。
私は何をしないのですか?
pupeno:
私が必要として行方不明になった何fontawesome5
にmodule-info.java
自分のアプリケーションの:
requires org.kordamp.ikonli.fontawesome5;