gpt4 book ai didi

java - 使用新的 Java 模块系统加载服务提供程序时我还缺少什么?

转载 作者:行者123 更新时间:2023-12-02 07:32:18 25 4
gpt4 key购买 nike

我将 module-info.java 添加到 Ikonli包,我在他们的服务类上遇到了麻烦。 ikonli-core 定义了一个名为 IkonHandler 的接口(interface)。 ikonli-fontawesome5-packa service provider对于名为 FontAwesomeSolidIkonHandlerIkonHandler 。这些服务提供者由 ikonli-javafxIkonResolver 使用.

鉴于此,我创建了这些模块定义:

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'

当没有处理程序成功时抛出 load the icon :

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 为空。 HANDLERSloaded at startup by this code :

    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) 找不到服务提供者。

我错过了什么?

最佳答案

我缺少的是在我的应用程序的module-info.java中需要fontawesome5:

requires org.kordamp.ikonli.fontawesome5;

关于java - 使用新的 Java 模块系统加载服务提供程序时我还缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51221802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com