Elastic Search: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager
Elastic Search: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager
将弹性搜索从 1.7 升级到 2.3.3 时出现以下错误
java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager
at org.apache.log4j.Logger.getLogger(Logger.java:104)
at org.elasticsearch.common.logging.log4j.Log4jESLoggerFactory.newInstance(Log4jESLoggerFactory.java:38)
at org.elasticsearch.common.logging.ESLoggerFactory.newInstance(ESLoggerFactory.java:82)
at org.elasticsearch.common.logging.ESLoggerFactory.getLogger(ESLoggerFactory.java:66)
at org.elasticsearch.common.logging.Loggers.getLogger(Loggers.java:121)
at org.elasticsearch.common.settings.Settings.<clinit>(Settings.java:63)
我在类路径中几乎没有 log4j jar 和 slf4j jar,但 Elastic search 尝试默认加载 log4j 记录器(如果它在类路径中可用)。对于某些冲突,log4j 对我不起作用。所以强制 Elasticsearch 在创建客户端时使用 slf4j 记录器。
ESLoggerFactory.setDefaultFactory(新 Slf4jESLoggerFactory());
我通过在 POM.XML 中添加以下依赖项解决了同样的问题:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>
将弹性搜索从 1.7 升级到 2.3.3 时出现以下错误
java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.LogManager
at org.apache.log4j.Logger.getLogger(Logger.java:104)
at org.elasticsearch.common.logging.log4j.Log4jESLoggerFactory.newInstance(Log4jESLoggerFactory.java:38)
at org.elasticsearch.common.logging.ESLoggerFactory.newInstance(ESLoggerFactory.java:82)
at org.elasticsearch.common.logging.ESLoggerFactory.getLogger(ESLoggerFactory.java:66)
at org.elasticsearch.common.logging.Loggers.getLogger(Loggers.java:121)
at org.elasticsearch.common.settings.Settings.<clinit>(Settings.java:63)
我在类路径中几乎没有 log4j jar 和 slf4j jar,但 Elastic search 尝试默认加载 log4j 记录器(如果它在类路径中可用)。对于某些冲突,log4j 对我不起作用。所以强制 Elasticsearch 在创建客户端时使用 slf4j 记录器。
ESLoggerFactory.setDefaultFactory(新 Slf4jESLoggerFactory());
我通过在 POM.XML 中添加以下依赖项解决了同样的问题:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>