【问题标题】:Hazelcast log4j configuration produces "java.lang.NoClassDefFoundError: org/apache/log4j/Logger" errorHazelcast log4j 配置产生“java.lang.NoClassDefFoundError: org/apache/log4j/Logger”错误
【发布时间】:2020-04-12 19:16:24
【问题描述】:

我正在尝试使用最新版本在 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 文件。打包时似乎应该。

谁能帮忙解决这个问题。

【问题讨论】:

  • 你可以试试java -cp ..\..\log4j\log4j-1.2.17.jar;..\lib\hazelcast-3.12.2.jar com.hazelcast.core.server.StartServer(如果你已经知道主类名就不用-jar了)
  • 感谢您的回复。试过了,同样的错误。
  • org.apache.log4j.Logger 类包含在 log4j jar 中,你不应该有 NoClassDefFoundError。你能仔细检查一下文件夹和文件名是否正确吗?
  • 你说得对,我遇到了路径问题。感谢那。现在我只需要弄清楚如何告诉 log4j 如何获取配置文件。
  • 如果您将其作为答案提交,那么我会打勾

标签: java windows log4j hazelcast noclassdeffounderror


【解决方案1】:

为了告诉 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多