0

我有一个 Java 项目,我正在从 Java 8 迁移到 Java 13。这个项目使用 ResourceBundles 来启用语言本地化。

在 Java 8 中,我为 ResourceBundle.getBundle(baseName, control) 提供了一个自定义 ResourceBundle.Control ,但这在 Java 9+ 中不再起作用。据我了解,我必须改为提供一个自定义的 ResourceBundleProvider 接口,我称之为 UiProvider,以及该接口的一个实现 UiProviderImpl,它必须用作服务。

为了生成模块描述符,我使用了 moditect maven 插件。但看起来我不能在任何地方添加提供指令,只能导出、打开和使用指令。还是我错过了什么?这是我尝试配置的 pom.xml 的摘录。这可以解决吗?

<module>
        <moduleInfo>
                 <name>net.babelsoft.negatron</name>
                 <opens>net.babelsoft.negatron;</opens>
                 <uses>theme.language.spi.UiProvider</uses>
                 <provides>theme.language.spi.UiProvider with theme.language.spi.UiProviderImpl</provides>
        </moduleInfo>
 </module>
4

1 回答 1

0

在我写我的问题时,Moditect 不支持标签中的provides指令。moduleInfo唯一的办法就是使用一个moduleInfoSource标签,这迫使开发者直接写的实际内容module-info.java,不是很令人满意。

在与 Moditect 的作者讨论后,我提交了一个pull request ,在标签内添加对provides指令的支持。moduleInfo它还没有被合并到 Moditect 源代码中......

于 2019-12-10T19:28:20.653 回答