为了账号安全,请及时绑定邮箱和手机立即绑定

JPMS 是否支持来自 META-INF/服务的自动模块服务?

JPMS 是否支持来自 META-INF/服务的自动模块服务?

绝地无双 2021-12-30 17:22:28
您可以在此处找到有关自动模块的以下信息:模块系统也扫描 META-INF/services 并使自动模块提供其中命名的服务。假定允许自动模块使用所有服务。但是,我有以下情况。我想在 JPMS 中将 log4j2 与 slf4j 一起使用。为了做到这一点,它log4j-slf4j-impl-2.11.1.jar必须提供 JPMS 服务到slf4j-api-1.8.0-beta2.jar. log4j 的开发者制作log4j-slf4j-impl-2.11.1.jar为自动模块并通过 META-INF/services 提供服务。但是,它不起作用,它给出了以下内容:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/Logger    at org.apache.logging.log4j.slf4j@2.11.1/org.apache.logging.slf4j.SLF4JServiceProvider.initialize(SLF4JServiceProvider.java:53)    at org.slf4j/org.slf4j.LoggerFactory.bind(LoggerFactory.java:153)    at org.slf4j/org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:141)    at org.slf4j/org.slf4j.LoggerFactory.getProvider(LoggerFactory.java:419)    at org.slf4j/org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:405)    at org.slf4j/org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:354)    at org.slf4j/org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:380)    at Log4j2Slf4jJdk11/com.temp.NewMain.<clinit>(NewMain.java:12)Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.Logger    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)    ... 8 more我决定将模块信息添加到log4j-slf4j-impl-2.11.1.jarJPMS 并通过provides ... with... 问题解决了 - 我没有得到任何NoClassDefFoundError. 这是该问题的链接。所以我的问题:JPMS 是否支持 META-INF 中的服务/自动模块的服务?如果是,那么如何解释这种行为?
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

SLF4J 1.8 需要实现 org.slf4j.spi.SLF4JServiceProvider 作为公开服务。它在 log4j-slf4j18-impl jar 中发现。但是,Log4j SLF4J 桥接器需要 Log4J API(模块 org.apache.logging.log4j)。即使这是一个显式的 Java 模块,因为它只是从自动模块中引用,所以它不会被加载,从而导致 ClassNotFoundException。

对此的简单解决方案是在启动应用程序时在命令行中包含 --addmodules=org.apache.logging.log4j。


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信