ClassNotFoundException:org.apache.logging.log4j.Logger

z5btuh9x  于 11个月前  发布在  Apache
关注(0)|答案(1)|浏览(184)

在我的 Java 17**maven 项目中,我使用了基于 * log4j 2 * 的 * slf 4j *。当我从 Eclipse 中启动它时,它运行得很好。

  • Maven* 将主类放在模块jar文件的 MANIFEST 中,所有依赖的jar文件放在 target/lib 文件夹中。
  • target/lib* 托管文件 log4j-api-3.0.0-alpha1.jar,该文件托管类***org.apache.logging.log4j.Logger***。

我已经使用 bash 命令检查了 org.apache.logging.log4j.Logger 的前缀

for i in target/lib/*.jar; do jar -tvf "$i" | grep -Hsi org.apache.logging.log4j.Logger; done

字符串
当我从命令行运行我的程序时,

java -p target/lib -m eu.ngong.iqStm


我知道你失败了

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/Logger
        at [email protected]/org.apache.logging.slf4j.SLF4JServiceProvider.initialize(SLF4JServiceProvider.java:53)
        at [email protected]/org.slf4j.LoggerFactory.bind(LoggerFactory.java:195)
        at [email protected]/org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:182)
        at [email protected]/org.slf4j.LoggerFactory.getProvider(LoggerFactory.java:490)
        at [email protected]/org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:476)
        at [email protected]/org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:425)
        at [email protected]/org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:451)
        at [email protected]/eu.ngong.iqStm.App.<clinit>(App.java:30)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.Logger
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
        ... 8 more


一个缩小 java 找不到类 org.apache.logging.log4j.Logger 的原因的想法?
你知道我必须在命令行上添加什么来运行我的程序吗?

mbzjlibv

mbzjlibv1#

由于alpha1版本中的log4j-slf4j2-impl不是一个完整的模块,JVM无法找到它的依赖项。您需要显式添加log4j-api的模块:

java -p target/lib --add-modules org.apache.logging.log4j -m eu.ngong.iqStm

字符串
在下一个alpha版本中,所有的模块都将被命名为JPMS模块,所以这个问题不会出现。

相关问题