首页 > 解决方案 > Hazelcast log4j 配置产生“java.lang.NoClassDefFoundError: org/apache/log4j/Logger”错误

问题描述

我正在尝试使用最新版本在 Windows 上设置 Hazelcast log4j 日志记录。

我添加了配置:

  <properties>
        <property name="hazelcast.logging.type">log4j</property>
  </properties>

我从 hazelcast bin 文件夹运行以下命令:

java -jar ..\lib\hazelcast-3.12.2.jar com.hazelcast.core.server.StartServer

这会产生以下错误:

 Dec 20, 2019 8:44:56 AM com.hazelcast.config.AbstractConfigLocator
    INFO: Loading 'hazelcast.xml' from the working directory.
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
            at com.hazelcast.logging.Log4jFactory.createLogger(Log4jFactory.java:29)
            at com.hazelcast.logging.LoggerFactorySupport$1.createNew(LoggerFactorySupport.java:32)
                ...
    Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
            at java.net.URLClassLoader.findClass(Unknown Source)
                ...

我看到 Hazelcast 需要 log4j 版本 1.2.17,所以我从 maven 下载了它并将它放在一个文件夹中。然后我运行了以下命令:

 java -cp ..\..\log4j\log4j-1.2.17.jar -jar ..\lib\hazelcast-3.12.2.jar com.hazelcast.core.server.StartServer

但是,我读过您不能在同一语句中指定类路径和 jar。hazelcast jar 不包含 log4j jar 文件。似乎它们应该在包装时。

任何人都可以帮忙吗?

标签: javawindowslog4jhazelcastnoclassdeffounderror

解决方案


为了告诉 log4j 如何获取配置文件,您必须在配置文件中添加以下行:

    <property name="log4j2.configuration">/path/to/properties/log4j2.properties</property>

所以它看起来像这样:

  <properties>
        <property name="hazelcast.logging.type">log4j</property>
        <property name="log4j2.configuration">/path/to/properties/log4j2.properties</property>
  </properties>

然后您必须编辑 log4j2.properties 文件,如文档中所述:https ://docs.hazelcast.org/docs/latest/manual/html-single/index.html#logging-configuration


推荐阅读